从Firestore获取数据后,方法始终返回null

时间:2019-01-12 15:11:41

标签: android google-cloud-firestore

我正在从Firebase Firestore数据库下载数据。为了将每个项目添加到ArrayList中,我创建了以下两种方法:

   private void getProductDetails(ArrayList<HashMap<String, Object>> product_seller, ArrayList<SellerObject> seller) {
    rvValues = new ArrayList<>();

    for (int i = 0; i < seller.size(); i++) {
        SellerObject so = seller.get(i);
        Log.i(TAG, "getProductDetails: sotze " + seller.size());


        rvValues.add(getProductData(so));

        progressBar_products.setVisibility(View.INVISIBLE);


    }

        pa = new productsAdapter(getActivity(), rvValues);
        rv.setAdapter(pa);


}


private ProductObject getProductData(SellerObject so) {
    for (int in = 0; in < so.getProductValues().size(); in++) {

        HashMap<String, Object> product_values = so.getProductValues().get(in);


        final DocumentReference docRef = db.collection("Products").document(String.valueOf(product_values.get("productId")));

        docRef.get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                po = documentSnapshot.toObject(ProductObject.class);
                po.setSo(so);
                po.setPrice(String.valueOf(product_values.get("price")));
                po.setSize(String.valueOf(product_values.get("size")));


            }
        });

       return po;
    }
    return po;
}

现在的问题是我要返回一个为null的ProductObject。我在班级顶部声明了采购订单:

    private ProductObject po = new ProductObject();

那么在完成for循环后如何返回值?

1 个答案:

答案 0 :(得分:0)

您的pojo类变量必须与Firestone中定义的名称相同。

请检查您的pojo类的每个变量(即(ProductObject))是否与Firestone中“产品”集合下的相同属性