Я получил данные из базы данных Firebase, внутри метода OnDataChange. Я хочу выполнить другой запрос на основе данных, которые я извлек ранее. Прежде чем перейти к другому занятию, я извлек все свои данные, используя функцию обратного вызова MyCallback. Здесь listAllRequest содержит ожидаемые данные, но userMap содержит ноль. Как я могу убедиться, что userMap содержит данные, прежде чем перейти к другому виду деятельности?
public void readRequestData(final Outgoing.MyCallback myCallback) {
groupDatabase = FirebaseDatabase.getInstance().getReference("Users").child(user.getUid()).child("outgoing");
userInfoRef= FirebaseDatabase.getInstance().getReference("UserInfo");
groupDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listAllRequest.clear();
for(DataSnapshot childSnapshot: dataSnapshot.getChildren())
{
final BookRequestData bookRequestData = childSnapshot.getValue(BookRequestData.class);
listAllRequest.add(bookRequestData);
userInfoRef.child(bookRequestData.getOwnerId()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
User user=dataSnapshot.getValue(User.class);
userMap.put(bookRequestData.getReqId(),user);
Log.e("outgoing",user.getName());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
myCallback.onCallback(listAllRequest);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {}
});
}