Q: Firestore data in Nested Recyclerview I'm trying to retrive data from Firestore in a fragment. My onCreateView function is this
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_order__subscription_0, container, false);
        recyclerView = (RecyclerView)rootView.findViewById(R.id.recycViewSubscription);
        linearLayoutManager = new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(linearLayoutManager);

        /* Adding Customer Data in Recycler View from Firebase */

        final List<CustomerClass> itemList = new ArrayList<>();
        final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();

        Log.d(TAG, user.getUid());

        CollectionReference users = db.collection("Users").document(user.getUid()).collection("Order_Subscription");
        users.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        if (task.isSuccessful()) {
                            for (QueryDocumentSnapshot document : task.getResult()) {
                                Log.d(TAG, "DocumentSnapshot data: " + document.getData());

                                final Map<String, Object> m = document.getData();

                                /* Getting Subitem for the current Customer */

                                Log.d(TAG, document.getId().toString());
                                CollectionReference orders = db.collection("Users").document(user.getUid()).collection("Order_Subscription").document(document.getId().toString()).collection("OrdersByCustomer");
                                final List<CustProduct_Subclass> subItemList = new ArrayList<>();
                                orders.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {

                                            @Override
                                            public void onComplete(@NonNull Task<QuerySnapshot> subtask) {

                                                if (subtask.isSuccessful()) {
                                                    for (QueryDocumentSnapshot subdocument : subtask.getResult()) {
                                                        Log.d(TAG, "DocumentSnapshot Subdata: " + subdocument.getData());

                                                        Map<String, Object> n = subdocument.getData();


                                                        CustProduct_Subclass subItem = new CustProduct_Subclass(n.get("ProductName").toString(), n.get("Quantity").toString(), n.get("Amount").toString(), n.get("Description").toString(), n.get("Delivered").toString());
                                                        subItemList.add(subItem);
                                                        n.clear();
                                                    }


                                                    if (m.get("CustomerName") != null && m.get("Address") != null && m.get("Address") != null && m.get("MobileNumber") != null)
                                                    {
                                                        customerClass = new CustomerClass(m.get("CustomerName").toString(), m.get("Address").toString(), m.get("MobileNumber").toString(), subItemList);
                                                        Log.d(TAG, customerClass.toString());
                                                        itemList.add(customerClass);
                                                    }


                                                } else {
                                                    Log.d(TAG, "Error getting documents.", subtask.getException());
                                                }
                                            }
                                        });


                                /* Subitem part done*/

                                Log.d(TAG, "Finished Subtask");
                                m.clear();

                            }
                            itemAdapter = new ItemAdapter(itemList);
                            recyclerView.setAdapter(itemAdapter);
                            itemAdapter.notifyDataSetChanged();




                        } else {
                            Log.w(TAG, "Error getting documents.", task.getException());
                        }
                    }
                });
        return rootView;
    }

My database looks like this.


I'm not able  to retrive data from the database. It shows on the logs. But out of order, I am aware of the asychronous nature of the calls, but my usecase requires that I get a customer and retrieve his/her order and then move on to next customer to do the same. How can I do this? Is nesting like this okay/possible or should I change the model? (orders to contain customer ID)
