Essayer de mettre cela dans votre ExpandableListAdapter, listView est une référence à la ExpandableListView lui-même. Et lastExpandedGroupPosition est un entier, membre de la variable définie à l'intérieur de votre ExpandableListAdapter.
@Overridepublicvoid onGroupExpanded(int groupPosition){//collapse the old expanded group, if not the same//as new group to expandif(groupPosition != lastExpandedGroupPosition){
listView.collapseGroup(lastExpandedGroupPosition);}super.onGroupExpanded(groupPosition);
lastExpandedGroupPosition = groupPosition;}
Wow l'homme, sur place! 🙂 MERCI BEAUCOUP! 😀
Pas de problème. Fait pour une application d'un moment de retour. Heureux qu'il pourrait aider quelqu'un d'autre.
Il y a un problème avec votre solution: le nouveau groupe sera défiler autant que la hauteur du dernier groupe (qui est fermé). Mais merci quand même.
fonctionne comme un charme. testé sur android v. 4, 3.2 et 3.
Pour éviter de conserver une instance variabel appelé lastExpandedGroupPosition vous pouvez tout simplement une boucle sur l'ensemble de votre listes d'index et fermez tous ce qui n'est pas le nouveau groupe qui s'est élargi.
n'est-ce pas exagéré?Pour éviter de garder un int boucle est potentiellement énorme liste
Très utile, mais comme Anh Tuan mentionne dans les commentaires ci-dessus, j'ai eu des problèmes avec la ExpandableListView pas alors de défilement vers le haut de le groupe actuellement sélectionné (il serait rester à la actuellement à volutes position, au milieu du groupe, quelque part). Vous devez également ajouter un onGroupClickListener() pour faire défiler jusqu'à la position correcte:
@Overridepublicboolean onGroupClick(ExpandableListView parent,View v,int groupPosition,long id){//Implement this method to scroll to the correct position as this doesn't//happen automatically if we override onGroupExpand() as above
parent.smoothScrollToPosition(groupPosition);//Need default behaviour here otherwise group does not get expanded/collapsed//on clickif(parent.isGroupExpanded(groupPosition)){
parent.collapseGroup(groupPosition);}else{
parent.expandGroup(groupPosition);}returntrue;}
Hey groupPosition est toujours de retour à zéro pouvez-vous me guider
Même si cette technique fait le tour, il n'a pas l'air très jolie. Toutes les recommandations pour le faire paraître mieux?
Bon, je vais répondre à ma propre question. Si vous appelez d'un parent.setSelection(groupPosition), c'est beaucoup mieux. Gardez à l'esprit, il doit être appelé après que le groupe de développement ou réduction de logique, pas avant.
Essayer de mettre cela dans votre
ExpandableListAdapter
,listView
est une référence à laExpandableListView
lui-même. EtlastExpandedGroupPosition
est un entier, membre de la variable définie à l'intérieur de votreExpandableListAdapter
.Très utile, mais comme Anh Tuan mentionne dans les commentaires ci-dessus, j'ai eu des problèmes avec la ExpandableListView pas alors de défilement vers le haut de le groupe actuellement sélectionné (il serait rester à la actuellement à volutes position, au milieu du groupe, quelque part). Vous devez également ajouter un onGroupClickListener() pour faire défiler jusqu'à la position correcte:
Cette a fonctionné pour moi
Faire pour développer l'cliqué groupe et l'effondrement de toutes les autres
C'est de travailler pour moi.