Les meilleures pratiques combinant la liste et des vues non-liste, comme le marché
-
19-09-2019 - |
Question
Je suis en train d'aborder un problème qui, apparemment, de nombreux développeurs Android ont, ce qui est de savoir comment intercaler des listes avec des données non-liste, dans un grand volet scrollable.
Le modèle que j'ai à l'esprit est l'écran pour une application individuelle dans le marché. Vous avez une grande description, une liste de quelques commentaires paresseusement chargés, puis certains objets qui font des choses différentes, comme visiter la page web du développeur, les appeler, etc. Et puis entre tous, sont des en-têtes de section belles.
Emulation cette approche semble être extrêmement difficile. J'ai lu assez SO réponses et les messages de la liste de diffusion de savoir ne pas mettre un ListView à l'intérieur d'un ScrollView, mais je veux le même effet sans utiliser addHeader () et addFooter () avec en-tête très complexes et des vues de bas de page.
Je l'ai essayé d'utiliser un LinearLayout que je stock avec vue sur moi-même, mais je ne peux pas obtenir les effets agréables de clic que les éléments de la liste par défaut ont (l'arrière-plan orange, blanc long clic, etc.).
Que dois-je faire?
La solution
Jetez un oeil à mon MergeAdapter
, qui est conçu pour gérer des scénarios comme celui-ci.
Autres conseils
Pourquoi ne pas utiliser un en-tête? C'est facile. Définir le contenu d'en-tête dans une mise en page séparée. Votre mise en page d'activité ne contient que la ListView
que vous voulez en bas. Pas de vue de défilement!
Ensuite, appelez
View headerView = getLayoutInflater().inflate(R.layout.header_layout, null);
ListView listView = (ListView) findViewById(R.id.my_list_view);
listView.addHeaderView(headerView, null, false);
Il est essentiel d'appeler cette forme de addHeaderView
afin que l'en-tête est désactivé. Dans le cas contraire, il peut être sélectionné, ce qui semble tout à fait bizarre.
L'exemple de Mark fonctionnerait. Fondamentalement, vous avez besoin d'un adaptateur avec différents types d'affichage. Un autre bel exemple est http://jsharkey.org / blog / 2008/08/18 / séparation listes avec en-têtes-en-android-09 / qui pourrait fonctionner mieux que Marc parce que vous voulez avoir des séparateurs et des choses de groupe ensemble.