我在Firestore中有一个文档,该文档具有一个字符串元素数组,这些字符串元素也应引用其他文档的ID。
所以我的情况是从Firestore获取保存的ID数组,然后在其中创建for循环并在Firestore上查询以获取符合该ID的每个文档。
但是我的问题是我尝试将查询的每个结果都放入新数组,但是我只得到第一个元素
这是我的消防处,
我的代码:
void getCoursesDetails(ArrayList<String> openedCourses, MyCallback2 myCallback2){
// Get full details of every course
// openedCourses array here has size of 5
for (int i = 0; i < openedCourses.size(); i++) {
DocumentReference docRef = db.collection("courses").document(openedCourses.get(i));
docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
if (documentSnapshot.exists()) {
detailedCourses.add(documentSnapshot.toObject(Courses.class));
myCallback2.onCallback(detailedCourses);
}
}
});
}
// when put myCallback2.onCallback(detailedCourses); here i get array of zero cuz Firestore loads data asynchronously
}
所以我的问题是:如何使我的detailCourses数组保存从firestore结果中从for循环获得的每个元素?