2017-02-24 1 views
1

J'ai donc une ArrayList qui contient plusieurs ArrayLists. Ce que j'essaie de faire, c'est montrer tous les éléments dans tous les arraylists. Le problème est que la boucle for que j'ai créée remplace les éléments précédents.ArrayList contenant plusieurs ArrayLists dans ViewHolder

public void onBindViewHolder(final ContentClickViewHolder holder, int position) { 

    int finalPosition = MainActivity.getBasketList().get(holder.getAdapterPosition()).size(); 
    for (int i = 0; i < finalPosition; i++) { 
     final Content object = MainActivity.getBasketList().get(position).get(i); 
     final int value = i; 

     holder.name.setText(object.getRestaurant_name()); 
    } 
} 

Répondre

0
  1. Ne pas le faire dans onBindViewHolder() méthode.

  2. liste Obtenir de MainActivity.getBasketList() faire une copie de cette liste

    List<YourObject> copy = new ArrayList<>(MainActivity.getBasketList());

  3. Faites un peu de calcul en dehors de l'adaptateur. Cela peut être une activité, ou un meilleur présentateur sur cette copie.

  4. Définissez cette copie comme une nouvelle donnée pour l'adaptateur.

L'adaptateur devrait simplement aider à afficher la liste, ne devrait pas avoir de logique pour trier la liste.