![](/img/trans.png)
[英]How to retrieve data from firestore to display in multi select form field
[英]How to retrieve data from merge tasks in firestore query?
有人可以告訴我如何檢索所有三個任務嗎? 實際上,我只能檢索兩個任務。
CollectionReference players = db.collection("gamers");
Task task1 = players.whereEqualTo("player_id_one", myId)
.get();
Task task2 = players.whereEqualTo("player_id_two", myId)
.get();
Task task3 = players.whereEqualTo("player_id_three",myId).get();
Task<List<QuerySnapshot>> allTasks = Tasks.whenAllSuccess(task1, task2,task3);
allTasks.addOnSuccessListener(new OnSuccessListener<List<QuerySnapshot>>() {
@Override
public void onSuccess(List<QuerySnapshot> querySnapshots) {
for (QuerySnapshot queryDocumentSnapshots : querySnapshots) {
for (QueryDocumentSnapshot documentSnapshot : queryDocumentSnapshots) {
Modelgame players = documentSnapshot.toObject(Modelgame.class);
result.add(modelplayer);
adapter.notifyDataSetChanged();
}
}
}
});
當您使用Tasks#whenAllSuccess(Task...<?> tasks)方法時:
當所有指定的任務都成功完成時,返回一個任務,其中包含成功完成的任務結果列表。
這意味着您獲得的 List不是List<QuerySnapshot>
而是List<Object>
:
allTasks.addOnSuccessListener(new OnSuccessListener<List<Object>>() {
@Override
public void onSuccess(List<Object> querySnapshots) {
//Loop through the list only once
for (Object object : querySnapshots) {
Modelgame players = ((DocumentSnapshot) object).toObject(Modelgame.class);
result.add(modelplayer);
Log.d("TAG", players.getName());
}
adapter.notifyDataSetChanged(); //Added when the for loop ends.
}
});
因此,一旦所有任務都成功完成,您只需循環一次結果並將 object 轉換為DocumentSnapshot
object 並調用toObject()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.