#android #firebase #firebase-realtime-database
#Android #firebase #firebase-база данных в реальном времени
Вопрос:
Я хочу получить все данные в узле посещаемости, например, «Присутствует», «В отпуске» и т.д. Затем я хочу отобразить данные в ListView
или RecycleView
. Какова основная логика для этого?
Это все, что я получил:
package com.example.attendancemanagementsystem;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class ViewRecord extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_record);
}
}
Вот извлекаемые данные.
Комментарии:
1. Под каким дочерним элементом Firebase?
2. В разделе «Посещаемость»
3. Итак, вы хотите получить все эти значения,
Present
,On Leave
и так далее, верно?4. Да, вы правы .. я хочу показать их в listview или recycleview… Алекс Мамо
Ответ №1:
Согласно вашему комментарию, чтобы отобразить все эти значения в ListView
, пожалуйста, используйте следующий код:
ListView listView = (ListView) findViewById(R.id.list_view);
List<String> values = new ArrayList<>();
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, values;
listView.setAdapter(arrayAdapter);
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference attendanceRef = rootRef.child("Users").child(uid).child("Attendance");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String key = ds.getKey();
String value = ds.getValue(String.class);
values.add(key ", " value);
}
arrayAdapter.notifyDatasetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
attendanceRef.addListenerForSingleValueEvent(valueEventListener);
Комментарии:
1. Идеальный.. Это работает, я получаю данные сейчас,,, Но я хочу еще кое-что… Я хочу значения вместе с ключами … bcz мне нужны даты, в которые учащийся присутствует или отсутствует,,, Как я могу это сделать,,, … Большое спасибо..
2. Приятно слышать, что это сработало 🙂 В таком случае, пожалуйста, ознакомьтесь с моим обновленным ответом.
3. Wowwww…So быстро и очень точно…. Большое спасибо …. Выполнил все мои требования….
Ответ №2:
Сначала проверьте наличие зависимостей в вашем приложении gradle.
implementation 'com.google.firebase:firebase-database:16.1.0'
implementation 'com.google.firebase:firebase-core:16.0.7'
Инициализировать переменную.
private lateinit var mStorageRef: StorageReference
private lateinit var auth: FirebaseAuth
Затем получите ссылку на вашу базу данных firebase.
mStorageRef = FirebaseStorage.getInstance().reference
auth = FirebaseAuth.getInstance()
После этого получите нужные данные с этого узла.
StorageRef.child("Users/${auth.currentUser!!.uid}/attendance")
Комментарии:
1. Можете ли вы добавить какое-нибудь объяснение к своему коду, чтобы другие могли извлечь из него уроки?