ListView cacher certains éléments
Je veux cacher certains éléments dans la vue liste en fonction de certains critères. J'ai trouvé 2 solutions, mais aucune de ces travaux. J'ai essayé de retour empry View
de getItem()
méthode, mais diviseur est encore visible. Donc, si je cache tous les objets par exemple, elle conduit à une grande pile de diviseurs. La deuxième était de définir View.GONE
dans getItem()
méthode. Mais ListView encore reservates place pour les éléments invisibles et qui mène au vide vues dans ma liste. Quelqu'un a trouvé une solution de contournement pour cette question?
EDIT: j'ai Aussi besoin de me rendre compte que je ne peut pas supprimer toutes les données du dataset. Adaptateur/ListView ne doit MASQUER les éléments spécifiés.
OriginalL'auteur Lingviston | 2013-09-12
Vous devez vous connecter pour publier un commentaire.
Je voudrais mettre en œuvre la présente de la manière suivante:
Créer une liste ou un tableau à l'intérieur de votre adaptateur qui permettra de stocker les index des éléments qui vont être cachés.
Par exemple:
Remplacer vos cartes
getCount()
méthode pour renvoyer le nombre dedes éléments de votre liste, MOINS le nombre d'éléments dans la collection
mentionné dans l'étape 1.
Par exemple:
Remplacer
getItem()
pour nous retourner les articles compensée par l'indexcontenus dans la collection à partir de l'étape 1.
Par exemple:
N'oubliez pas de trier hiddenItems si ils ne sont pas triés. Il m'a fallu plusieurs heures pour résoudre ce bug. Aussi comme @MarianKlühspies remarqué, j'ai ajouté un peu de code: de retour de position < liste.size() ? liste.get(position) : null;
OriginalL'auteur Paul
Mise à JOUR:
Oui, vous pouvez
add/remove
même après que vous avez fourni les données à la carte. Stocker les données dans certainsArrayList<type>
et le passer à la classe personnalisée.La méthode la plus simple de contourner ce problème consiste à
remove
ces éléments à partir de la carte de la ListView et appelnotifyDataSetChanged()
. Ce seraremove the cells/row
de ces éléments de la liste.Si vous prévoyez d'utiliser ces éléments dans l'avenir dans la liste encore une fois, les stocker dans place à part Pour exemple les stocker dans un fichier ou une base de données, selon ce qui convient le mieux à vos besoins.
Mise à jour de la réponse
OriginalL'auteur Umer Farooq
Me semble que votre meilleur pari serait de prolonger l'ListAdapter que vous utilisez et ajouter des méthodes pour cacher certaines lignes et d'ajuster
getCount()
etc. Ou vous pourriez écrire un wrapper de la carte (vous avez pu mettre en œuvre lesWrapperListAdapter
interface) pour une utilisation avec n'importe quel ListAdapters ici et dans l'avenir chaque fois que vous avez besoin de masquer les lignes.OriginalL'auteur wojtek.kalicinski