#java #android #firebase #firebase-realtime-database
#java #Android #firebase #firebase-realtime-database
Вопрос:
ANDROID: у меня есть база данных Firebase, подобная этой.
В моем приложении я хотел бы скомпилировать arraylist, который отображает все значения из nameofEntry
[ОПИСАННОГО НИЖЕ]. Под этим я подразумеваю «balso», «nairboh» и так далее.
У меня есть ссылки:
DatabaseReference root = FirebaseDatabase.getInstance().getReference();
DatabaseReference users = root.child("Users");
DatabaseReference childRef = users.child(userID);
DatabaseReference childRefNameNode = childRef.child(nameOfEntry);
childRefNameNode.child(nameOfEntry).setValue(nameOfEntry);
// ИЗВЛЕЧЕНИЕ ДАННЫХ
childRefNameNode.child(nameOfEntry).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String valueFromDB = dataSnapshot.getValue(String.class);
Log.i("Jimit", valueFromDB);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Но это выполняется только для одной записи. Как я могу получить больше записей? [Все из них]?
Ответ №1:
Вам нужно использовать этот фрагмент кода. Вы не использовали цикл for для обхода своих дочерних элементов.
РЕДАКТИРОВАТЬ: кроме того, обновите ссылку на базу данных следующим образом:
//Updated ref
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Users").child(userID);*
//add listener to updated ref
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//use the for loop here to step over each child and retrieve data
for (DataSnapshot childSnapshot : dataSnapshot.getChildren()){
String valueFromDB = childSnapshot.getValue(String.class);
Log.i("Jimit", valueFromDB);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Дайте мне знать, если это что-то изменит для вас.
Комментарии:
1. Это не случайно
2. @augustalsina Проверьте отредактированный ответ, а также обратите внимание, что прослушиватель событий value вернет только снимок измененного значения.