我从OnbaseChange方法内部的firebase数据库中获取了数据,我想根据之前获取的数据执行另一个查询。在进行其他活动之前,我使用回调函数MyCallback提取了所有数据。这里的listAllRequest包含期望的数据,而userMap包含null。在进行其他活动之前,如何确保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) {}
});
}