Я использую метод addValueEventListener, как показано ниже:
public List<MyClassModel> DoRequestCards() {
valueEventListener = getDatabaseReference()
.child("Example")
.child(Objects.requireNonNull(getFirebaseAuthInstance().getCurrentUser()).getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear();
for (DataSnapshot data : dataSnapshot.getChildren()) {
MyClassModel model = data.getValue(MyClassModel.class);
//Retrieves UniqueKey from each example
Objects.requireNonNull(card).setUniqueId(data.getKey());
list.add(model);
}
taskListener.OnSuccess(); //call interface method
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
taskListener.OnError(databaseError.getMessage()); //call interface method
}
});
return list;
}
Можно создать другой метод для извлечения другого списка с другой выборкой данных addValueEventListener
в том же экземпляре valueEventListener
? Или я должен создать для него еще один экземпляр (потому что они находятся на одной и той же активности и нуждаются в том, чтобы каждый продолжал слушать свои изменения)?
Я использую один и тот же экземпляр ValueEventListener для разных действий, но когда действие прекращается (onStop), я удаляю его (у меня нет проблем с этим).