我有一个包含对象和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);
}
我搜索了很多东西,但仍然没有找到解决方案。您建议做什么?这可能是Firestore CompleteListener
的问题吗?
非常感谢!