У меня есть valueEventListener (), который используется для получения данных из Firebase.
Вот первый.
sectionReference.child(classID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
uidArrayList.add(snapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
Я хочу получить список UID в uidArrayList и использовать его для выполнения некоторых других функций.
Вот второй.
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
getUIDsInCurrentClass();
for(DataSnapshot snapshot: dataSnapshot.getChildren()){
User user = snapshot.getValue(User.class);
if(user.getRole().equals("student") && uidArrayList.contains(user.getUid())){
studentArrayList.add(user);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}
В этом втором Слушателе вы видите, что я хочу получить доступ к содержимому uidArrayList . Используя Log.d, я увидел, что размер ArrayList равен 0, что означает, что он не был инициализирован при вызове во втором прослушивателе.
Можно ли каким-либо образом убедиться, что uidArrayList инициализируется со всеми значениями до того, как к нему будет обращаться в следующем ValueEventListener ().
Я пытался сделать это, Обработчики событий и прослушиватели событий, независимые друг от друга
Но у меня это не сработало. Заранее спасибо за ответ.