首页 > 解决方案 > 尽管我已经更新了数据,但数组调用返回 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);
    }

我搜索了很多东西,但我仍然没有找到解决方案。你建议怎么做?会不会是CompleteListenerFirestore 的问题?非常感谢!

标签: javaandroidarraysfirebasegoogle-cloud-firestore

解决方案


推荐阅读