试试这个:-
public void getNeededUsers(List<String> uidList, UsersListCallback usersListCallback){
List<User> userList = new ArrayList<>();
for (int i = 0; i < uidList.size(); i++){
db.collection("Collection A").whereEqualTo("uid", uidList.get(i))
.addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
@Override
public void onSuccess(DocumentReference documentReference) {
userList.add(documentReference.getId());
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Toast.makeText(ActivityName.this, "Error In Fetching Uid's" + e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
现在userList将包含所有匹配的uid。现在根据这些uid从集合2中检索数据。
通过调用fetchData(userList);
public void fetchData(List<String> documentList)
{
for (int j = 0; j < documentList.size(); j++){
db.collection("Collection B").whereEqualTo("uid", documentList.get(i))
.get()
.addOnCompleteListener(this, new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(Task<QuerySnapshot> task) {
if (task.isSuccessful())
{
for (QueryDocumentSnapshot documentSnapshot : task.getResult())
{
//Here you can fetch data or convert it to object
}
}
}
})
.addOnFailureListener(this, new OnFailureListener() {
@Override
public void onFailure(Exception e) {
Toast.makeText(ActivityName.this, "Error: " + e.getMessage(), Toast.LENGTH_SHORT).show();
pd.dismiss();
}
});
}
}