尽管我已经更新了数据,但数组调用返回空值

时间:2020-02-07 21:37:12

标签: java android arrays firebase google-cloud-firestore

我有一个包含对象和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的问题吗? 非常感谢!

0 个答案:

没有答案