Я пытаюсь получить пользовательские данные из базы данных Firebase в реальном времени, datasnapshot содержит дочерние элементы и данные, но когда я пытаюсь поместить их в массив, массив становится пустым. Я создал пользовательский класс, который содержит свойства, совпадающие со свойствами в firebase, перегруженными конструкторами и некоторыми методами. Он не расширяет ни один класс, хотя, как я знаю, он не будет работать с извлечением данных из Firebase.
private List<user> usersList = new ArrayList<>();
private DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
private DatabaseReference ref = databaseReference.child("Users");
public List<user> getUsers(){
ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Log.i("users", String.valueOf(dataSnapshot.getChildrenCount()));
for(DataSnapshot child: dataSnapshot.getChildren()){
user userRetrieved = child.getValue(user.class);
Log.d("USER before array", userRetrieved.getUserName());
usersList.add(userRetrieved);
for(int i = 0;i < usersList.size(); i++){
Log.d("USER", usersList.get(i).getUserName());
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.i("ERROR", databaseError.getMessage());
}
});
return usersList;
}
Все отзывы приветствуются.