java - 尽管我已经更新了数据,但数组调用返回 null
问题描述
我有一个包含我的对象和 Cloud Firestore 的数组。在 Firestore 中,我有 11 个文档,每个文档有两个字段。我从云中获取数据,并在我创建的名为 Food 的对象中设置两个字段的值。
然后我想读取name
数组中每个元素的字段值,但 Android 给了我NullPointerException
,因为我getName()
在一个空对象上调用该方法。在我也尝试使用 HashMap 而不是 Array 但结果相同之前,对元素的调用给了我相同的异常。
这是我的代码的最后一个版本:
Food[] foodList = new Food[11];
cloudDatabase.collection("food").get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
Food food;
int counter = 0;
for(QueryDocumentSnapshot foodDocument : task.getResult()) {
if (counter<12) {
String foodName = foodDocument.get("name").toString();
float foodPrice = Float.valueOf(foodDocument.get("price").toString());
food = new Food(foodName, foodPrice);
foodList[counter] = food;
food = null;
counter++;
}
else {
Log.w("Food Counter", "Limit reached!");
}
}
}
});
for (Food foodElement : foodList) {
String name = foodElement.getName(); //here I get the NullPointerException
Log.d("Food Names", name);
}
我搜索了很多东西,但我仍然没有找到解决方案。你建议怎么做?会不会是CompleteListener
Firestore 的问题?非常感谢!
解决方案
推荐阅读
- php - 试图用php发布多维数组
- c - 检查宏返回的变量返回条件始终为假
- autodesk-viewer - 如何获取所有模型元素的 dbId?
- android - 登录webview中Android空白页面上的MS OAuth2 - 如果我破坏配置,它将在webview中显示错误并工作
- sql - SQL Server 表计算到特殊列
- java - 正则表达式匹配直到Java中的文本结尾
- linux - 使用 gcc/ld/cmake 链接到特定的 .so 版本,拒绝其他版本
- batch-file - Windows 10 批处理文件:在以前版本中工作的文件的奇怪行为
- gcc - 汇编代码生成 SEGMENTATION FAULT
- xbee - XBee3 协调器在网络发现期间找不到 End_Device