У меня есть настройка вложенного представления рециркулятора (вертикальное представление рециркулятора, содержащее горизонтальные представления рециркулятора), где почти все работает нормально, за исключением части, где мне нужно очистить массив, который заполнен данными для целей горизонтального рециркулятораПосмотреть.Давайте начнем с кода для адаптера представления вертикального переработчика, который заполняет массив из пожарного депо, а внизу я объясняю, что происходит:
public void onBindViewHolder(@NonNull final MealPlanDetailsAdapter.MealPlanDetailsViewHolder mpDetailsViewHolder, final int position) {
// Set full address
String fullAddress = mealplanDetailsArrayList.get(position).getAddressLine() + ", " + mealplanDetailsArrayList.get(position).getCity() + ", " +mealplanDetailsArrayList.get(position).getPostalCode();
mpDetailsViewHolder.tvAddress.setText(fullAddress);
// Set restaurant name
mpDetailsViewHolder.tvRestaurant.setText(mealplanDetailsArrayList.get(position).getRestaurantName());
// Menu items
mpDetailsViewHolder.mealplanMenuRecycler.setHasFixedSize(true);
mpDetailsViewHolder.mealplanMenuRecycler.setLayoutManager(new LinearLayoutManager(adapterContext, LinearLayoutManager.HORIZONTAL, false));
String orderId = mealplanDetailsArrayList.get(position).getOrderDetails();
final FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
if (firebaseUser != null) {
for (UserInfo profile : firebaseUser.getProviderData()) {
userId = profile.getUid();
}
}
// Get menu items
CollectionReference orderReference = firebaseFirestore.collection("Customer_Data").document(userId).collection("Meal_Plans").document(orderId).collection("Placed_Order");
orderReference.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (final QueryDocumentSnapshot orderDocument : queryDocumentSnapshots) {
mealplanMenuArrayList = new ArrayList<>();
// Get image
String restaurantId = mealplanDetailsArrayList.get(position).getRestaurantId();
CollectionReference restaurantQuery = firebaseFirestore.collection("Restaurant_Data").document(restaurantId).collection("Menu_Card");
restaurantQuery.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
@Override
public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
for (QueryDocumentSnapshot menuDocument : queryDocumentSnapshots){
menuItemName = menuDocument.getString("menuItemName");
menuItemImage = menuDocument.getString("menuItemImage");
if (orderDocument.getString("menuItemName").equals(menuItemName)) {
MealplanMenu mealplanMenu = new MealplanMenu(menuItemName, orderDocument.getString("menuItemQuantity"),menuItemImage);
mealplanMenuArrayList.add(mealplanMenu);
}
}
mealplanMenuAdapter = new MealplanMenuAdapter(adapterContext, mealplanMenuArrayList);
mpDetailsViewHolder.mealplanMenuRecycler.setAdapter(mealplanMenuAdapter);
}
});
}
}
});
}
Я запрашиваю 2 разные коллекции выше.Мне нужно запросить 2 разных коллекций.Один предоставляет мне большую часть нужных мне данных, а другой - URL-адрес изображения, если совпадают 2 определенных значения в 2 коллекциях.Как вы можете видеть выше, я обновляю массив: foodplanMenuArrayList = new ArrayList <> ();
Однако я либо получаю все горизонтальные значения для каждого вертикального держателя, либо получаю только первые,Где я могу обновить массив, чтобы получить только то, что мне нужно?