【发布时间】:2020-02-12 17:44:48
【问题描述】:
我正在使用以下查询:
db.collection("Example")
.whereEqualTo("UserId", currentUser.getUid())
.orderBy("timestamp", Query.Direction.ASCENDING)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()){
for (QueryDocumentSnapshot document : task.getResult()){
Log.i(TAG, "onComplete: " + document.get("UserId") + " => " + document.get("userText"));
userIdArrayList.add(document.get("UserId").toString());
userTextArrayList.add(document.get("userText").toString());
}
}else{
Log.i(TAG, "onComplete: Error getting documents", task.getException());
}
}
});
由于查询正在遍历结果,我希望它将结果添加到数组中。但是,当我运行代码并尝试打印数组列表的内容时,我得到了 IndexOutOfBounds 异常,尽管我查看了应该包含结果的 userTextArrayList.get(0);。我添加了Log.i 行来检查代码是否成功运行,并且我可以在 Logcat 中看到正在从数据库中提取数据。由于某种原因,此代码没有将结果添加到 ArrayList。
我不确定还可以尝试什么,而且我无法在文档中找到任何可以帮助我解决可能出错的地方。
如果提供答案太麻烦,请随时向我指出可以帮助解决问题的文档。我感谢任何人可以提供的任何指导。
谢谢!
编辑:以下代码行出现错误:
userIdArrayList.add(document.get("UserId").toString());userTextArrayList.add(document.get("userText").toString())
由于某种原因,这些行没有将数据添加到数组中,当我稍后尝试在代码中打印数组时(即Log.i(TAG, "User Text => userTextArrayList.get(0).toString());),我收到了IndexOutOfBounds 的错误信息 - 显然 ArrayList 确实尽管上述代码将数据添加到 ArrayLists,但不包含数据。
【问题讨论】:
-
请说明您在哪一行得到错误。
-
道歉。我现在将编辑问题。
标签: java android firebase google-cloud-firestore