android - 如何从 Firestore 集合中获取所有文档并将它们返回到数组列表中?
问题描述
我有一个静态方法可以获取集合中的所有文档。我无法创建要返回的这些文档的数组。我怎么能那样做?让我们将数组列表称为“allItems”。我的方法是将在 for 循环中创建的每个项目添加到 allItems 数组列表中,但是当我返回它并且 android studio 提示我将数组列表设为最终列表时,该列表为空。
public static ArrayList<Item> geAllFromFireStore() {
FirebaseFirestore db = FirebaseFirestore.getInstance();
ArrayList<Item> allItems = new ArrayList<>();
db.collection("Items")
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d(TAG, document.getId() + " => " + document.getData());
String name = document.get("name") + "";
String categoryName = document.get("category") + "";
Item item = new Item(name, category);
// I would like to add these items to an array list and return that array list
}
} else {
Log.w(TAG, "Error getting documents.", task.getException());
}
}
});
return allItems;
}
解决方案
我是用 Kotlin 编写的,所以请在您的代码中进行调整。
// Declare variable that use to collect DocumentSnapshot
private lateinit var list: MutableList<DocumentSnapshot>
// In addOnCompleteListener…
if(task.isSuccessful){
lstMAP = mutableListOf<DocumentSnapshot>()
lstMAP.clear()
lstMAP.addAll(task.result!!.documents)
} else {
Log.d("doc", "0 doc")
}
推荐阅读
- google-bigquery - BigQuery - 为什么在 Google Analytics 中提取交易数据不需要 UNNEST 运算符?
- java - 如何使用 java / selenium 在 for 循环中添加条件
- gradle - 如何将 Kotlin 源代码的测试报告上传到 Coveralls?
- python - 无法获取下一批的嵌入索引
- php - ParseError:语法错误,意外'=>'(T_DOUBLE_ARROW),期望','或')'行号:89
- ios - 从 DJI 无人机读取参数
- python-3.x - 无法使用 Psycopg2 在 Amazon Redshift 中创建表
- jquery - 如何控制点击事件
- 有条件的?
- javascript - 如何不断添加到购物清单中的总价格中
- javascript - ElementRef 在被父组件第二次调用后失去了它的价值