Выше приведен лишь пример структуры папки в FirebaseDatabase. Я спрашиваю, как я могу получить значение этого дочернего узла.
Ниже мой код, который я пробовал:
//FirebaseDatabase Collecting all the Item List
ValueEventListener listener= new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for (DataSnapshot ds: dataSnapshot.getChildren()){
arrayItemList.add(ds.getKey());
}
firebaseRecyclerViewItem(arrayItemList);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.i(TAG, "onCancelled: Unable to fetch data");
}
};
lookUpDatabase.addValueEventListener(listener);
Вот код для метода firebaseRecyclerViewItem ():
public void firebaseRecyclerViewItem(final ArrayList<String> arrayItemList) {
DatabaseReference reference = null;
String referenceName = null;
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//FirebaseDatabase 2'nd Reference Address
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String key1 = ds.getKey();
Log.i(TAG, "onDataChange: " + key1);
String firebaseItemName = ds.child("DATA").getValue(String.class);
Log.i(TAG, "onDataChange: " + firebaseItemName);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
};
for (int i = 0; i < arrayItemList.size(); i++) {
referenceName = arrayItemList.get(i);
reference = FirebaseDatabase.getInstance().getReference().child("DATA").child(referenceName);
reference.addValueEventListener(valueEventListener);
//Loading RecyclerView
RecyclerViewItemList(reference, referenceName);
}
}
Это не значит, что я не могу получить значения, я могу получить их, однако в прикрепленной мной базе данных pi c есть три FILE01, FILE02 и FILE03. Я могу получить только последнее FILE03, значение "01", я имею в виду, что ValueEventListner пропускает все остальные ФАЙЛЫ, которые там есть, только последнее обновление или последний файл. Но я хочу, чтобы все данные о файлах отображались в моем recyclerView.
Я также пробовал другой подход, когда я получаю DataSnaphot, и использую for () L oop, где я использовал вложенные l oop:
//FirebaseDatabase Collecting all the Item List
ValueEventListener listener= new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
// here is where the changes which I have made, I tried to called the value which is impossible but still I tried to, but not result.
for (DataSnapshot ds: dataSnapshot.getChildren()){
String key= ds.getKey();
String firebaseItemName = ds.child("DATA").getValue(String.class);
Log.i(TAG, "onDataChange: " + firebaseItemName);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.i(TAG, "onCancelled: Unable to fetch data");
}
};
lookUpDatabase.addValueEventListener(listener);
RecyclerViewItemList(lookUpDatabase);
Есть ли способ или метод, который я могу использовать для вызова значений.