i'm downloading Data from my Firebase Firestore DB. To add every Item in my ArrayList i created the following two methods:
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;
}
The problem now is that i'm returning a ProductObject which is null. I'm declaring the PO at the the top of my class:
private ProductObject po = new ProductObject();
So how can i return the value after finishing the for loop?