Question

Je veux générer un ListView qui a des séparations entre certaines des entrées, comme on peut voir dans certaines des sections de propriété. Voir l'exemple ci-dessous. J'essaie de générer un List qui se compose d'une partie textviews , suivi par l'un des séparateurs fantaisie expliquant la partie suivante de la liste, puis à nouveau des vues de texte. Comment cela peut-il être fait? Je pensais à la création de différents points de vue d'ajouter à la liste? Est-ce la voie à suivre?

Était-ce utile?

La solution

Je suis une solution. Je ne sais pas si c'est le meilleur.

J'utilise un adaptateur personnalisé dérivé de ArrayAdapter pour la liste comme décrit dans cette tutoriel . Dans la classe d'adaptateur je vérifie si la position dans la méthode getView est une ligne normale, alors je Gonfler le mise en page de la ligne. Si elle est la première ligne d'un nouveau groupe I gonfler une mise en page de titre qui est une ligne normale, plus le titre du groupe au-dessus.

Si vous ne voulez pas mélanger l'en-tête dans l'une de vos lignes. Considérons la solution suivante:

Vous pouvez remplacer les deux méthodes getItemViewType et getViewTypeCount . Vous avez maintenant une liste qui peut afficher des lignes différentes. Vous devez vérifier le type de vue prévu pour l'élément dans la méthode getView et gonfler différentes mises en page en dépendent.

La liste va gérer le recyclage pour vous d'une manière qui retourne uniquement des vues de recyclage correct à votre méthode de getView, cela signifie que si la recycleView n'est pas nul, il peut être utilisé pour afficher votre cellule en cours.

Autres conseils

Vous pouvez utiliser mon SectionedAdapter , si GPLv3 est acceptable (licence de cette façon en raison d'un certain code en amont). Vous pouvez utiliser mon MergeAdapter , si vous avez besoin quelque chose de plus flexible et avec une licence moins limitant ( Apache 2).

Je pense que vous cherchez peut-être android.widget.ExpandableListView

http://developer.android.com/reference/android/widget /ExpandableListView.html

Je suis aussi intéressé par une réponse à cela. Il doit y avoir un moyen plus simple de le faire.

En regardant l'adaptateur, il y a une méthode, Adapter.getItemViewType (int position).

ListView définit une valeur de retour, ITEM_VIEW_TYPE_HEADER_OR_FOOTER qui indique si l'élément renvoyé est un en-tête ou bas de page.

Je ne l'ai pas essayé, mais je suppose que si vous créez votre propre adaptateur et le retour d'un élément avec le type indiquant qu'il est un en-tête ou le pied de page, que le ListView affiche de manière appropriée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top