您將如何以List.
該方法get().getResult().size()不起作用,它拋出IllegalStateException:“任務尚未完成”。
并且不能在回圈中使用異步/回呼方法將其值添加到串列然后回傳。
uj5u.com熱心網友回復:
考慮一個場景。
有一個“否”。資料庫根目錄中的集合,并且在串列中列出了它們的名稱。您必須獲得size()每個集合的(其中的檔案數)。通過同步呼叫獲取此資訊的唯一方法是等待掛起的請求完成。你可以這樣實作:
private void syncDocumentCounts() {
if (position > names.size() - 1) {
adapter.notifyDataSetChanged();
} else {
FirebaseFirestore.getInstance().collection(names.get(position)).get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
list.add(queryDocumentSnapshots.size());
position ;
syncDocumentCounts();
}
});
}
}
這里,
position = public int = 0
names = 集合名稱串列
list 是我們必須在其中添加值的串列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/401249.html
標籤:安卓 火力基地 异步 谷歌云firestore
上一篇:Rust異步借用生命周期
