我正在从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循环后如何返回值?
答案 0 :(得分:0)
您的pojo类变量必须与Firestone中定义的名称相同。
请检查您的pojo类的每个变量(即(ProductObject))是否与Firestone中“产品”集合下的相同属性