Dans un ExpandableListView
, existe-t-il un moyen de masquer l'indicateur de groupe pour les groupes sans enfants?
108
Dans un ExpandableListView
, existe-t-il un moyen de masquer l'indicateur de groupe pour les groupes sans enfants?
Réponses:
Essayez ceci >>>
pour tous les articles
En xml
la source
La
android:groupIndicator
propriété prend un état activé drawable. Autrement dit, vous pouvez définir une image différente pour différents états.Lorsque le groupe n'a pas d'enfants, l'état correspondant est 'state_empty'
Voir ces liens de référence:
ce et cela
Car
state_empty
, vous pouvez définir une image différente qui ne prête pas à confusion, ou simplement utiliser une couleur transparente pour ne rien afficher ...Ajoutez cet élément dans votre dessin avec état avec d'autres ....
Ainsi, votre liste de statistiques peut être comme ceci:
Si vous utilisez une ExpandableListActivity, vous pouvez définir l'indicateur de groupe dans onCreate comme suit:
J'ai testé cela pour fonctionner.
la source
Sur la base de la réponse de StrayPointer et du code du blog, vous pouvez simplifier encore plus le code:
Dans votre xml, ajoutez les éléments suivants à ExpandableListView:
Ensuite, dans l'adaptateur, vous procédez comme suit:
En utilisant la méthode setImageResource, vous obtenez tout cela avec une seule ligne. Vous n'avez pas besoin des trois tableaux Integer de votre adaptateur. Vous n'avez pas non plus besoin d'un sélecteur XML pour l'état développé et réduit. Tout se fait via Java.
De plus, cette approche affiche également l'indicateur correct lorsqu'un groupe est développé par défaut ce qui ne fonctionne pas avec le code du blog.
la source
getGroupView()
méthode de votreBaseExpandableListAdapter
implémentation. Jetez un œil à cet exemple d'implémentation .ViewHolder
modèle.indicator
est le nom de variable du détenteur de la vue.Comme mentionné dans une réponse différente, étant donné qu'Android traite un groupe de listes non développé comme vide, l'icône n'est pas dessinée même si le groupe a des enfants.
Ce lien a résolu le problème pour moi: http://mylifewithandroid.blogspot.com/2011/06/hiding-group-indicator-for-empty-groups.html
Fondamentalement, vous devez définir le dessin par défaut comme transparent, déplacer le dessinable dans votre vue de groupe en tant qu'ImageView et basculer l'image dans votre adaptateur.
la source
Dans votre code il suffit d' utiliser le code XML personnalisé pour la liste des groupes et qui a mis le ImageView pour GroupIndicator .
Et ajoutez ci-dessous les tableaux dans votre ExpandableListAdapter
également dans la méthode de ExpandableListAdapter, ajoutez les mêmes choses que ci-dessous
Référence: http://mylifewithandroid.blogspot.in/2011/06/hiding-group-indicator-for-empty-groups.html
la source
En XML
Dans
ExpandableListAdapter
->getGroupView
copier le code suivantla source
cela pourrait être une autre façon de XML, définir
android:groupIndicator="@null"
Lien de référence: https://stackoverflow.com/a/5853520/2624806
la source
vous propose ma solution:
1) Effacer l'indicateur de groupe par défaut:
2) dans ExpandableAdapter:
la source
Je voulais juste améliorer la réponse de Mihir Trivedi. Vous pouvez le placer dans getGroupView () qui se trouve dans la classe MyExpandableListAdapter
... et comme pour la mise en page, voici comment mon group_items.xml semble être
J'espère que cela aide ... n'oubliez pas de laisser un vote favorable
la source
Utilisez ceci, cela fonctionne parfaitement pour moi.
la source
Avez-vous essayé de changer
ExpandableListView
l'attribut deandroid:groupIndicator="@null"
?la source
Vous créez simplement une nouvelle mise en page XML avec hauteur = 0 pour l'en-tête de groupe masqué. Par exemple, il s'agit de «group_list_item_empty.xml»
Ensuite, votre disposition normale d'en-tête de groupe est «your_group_list_item_file.xml»
Enfin, vous venez de mettre à jour la méthode getGroupView dans votre classe d'adaptateur:
IMPORTANT : la balise racine des fichiers de mise en page (masqué et normal) doit être différente (comme dans l'exemple ci-dessus, LinearLayout et RelativeLayout)
la source
convertView.setVisibility (View.GONE) devrait faire l'affaire.
la source