2014-07-01 5 views
2

Je tente de créer une vue de liste qui affiche différentes données basées sur une sélection d'un spinner.Android: Comment effacer une vue de liste sans supprimer les données de la liste de tableau?

Ma vue de liste est implémentée via un adaptateur de base qui fonctionne correctement. Mes données sont stockées dans une liste de tableaux d'objets contenant chacun des champs qui stockent des données individuelles et, en fonction de la sélection du filtre, filtrent les données stockées dans la liste et les affichent dans la liste.

Mais ma question est comment puis-je effacer un contenu de vue de liste sans effacer ses données sous-jacentes (stockées dans la liste de tableau) et en appelant notifyDataSetChanged? Je veux être en mesure de conserver les données stockées, donc si l'utilisateur revient à une sélection précédente, les données sont toujours présentes.

Nous vous remercions d'avoir pris le temps de le lire.

Répondre

2

Vous pouvez simplement passer un autre ArrayList à l'adaptateur avec les nouvelles données à afficher dans ListView.

Ou, vous pouvez créer deux ArrayList à l'intérieur de l'adaptateur, un nommé original qui contient les éléments originaux du ListView et un autre currentElements qui sera le vrai ArrayList changé pour montrer que vous voulez. Avec certaines méthodes personnalisées, vous pouvez choisir de basculer entre les deux versions de ArrayList.

Cela pourrait être le même concept d'un adaptateur qui implémente un filtre. Quoi qu'il en soit, si je comprends votre problème, vous voulez changer le contenu d'un ListView en fonction de la sélection. Eh bien, dans ce cas, je voudrais envoyer un autre ArrayList à montrer.

+0

Merci, cela a résolu mon problème :) – user3364963

3

Comme vos données sont stockées dans un ArrayList, vous pouvez simplement utiliser:

listView.setAdapter(null); 

Il supprimera l'adaptateur de votre ListView, et ainsi, supprimer tous les éléments affichés.

Les données seront toujours dans votre ArrayList, donc si vous souhaitez afficher à nouveau ce ListView, il vous suffit de recréer votre Adapter et de le configurer à nouveau. Vous pouvez même créer une instance globale de votre BaseAdapter afin de la créer une seule fois.

2

Créez une liste d'adaptateurs, un adaptateur pour chaque sélection. Ensuite, passez simplement à un autre adaptateur lorsque la sélection est modifiée avec listView.setAdapter(adapter)

Questions connexes