44 votes

Afficher un seul enfant de la liste extensible à la fois

Est-il possible de ne développer qu'un seul enfant d'un ExpandableListView à la fois, ainsi l'ouverture d'un deuxième enfant fermerait l'enfant précédemment ouvert ?

142voto

Blundell Points 28342

Juste pour confirmer la réponse de bos dans le code :

     expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
        int previousGroup = -1;

        @Override
        public void onGroupExpand(int groupPosition) {
            if(groupPosition != previousGroup)
                expandableList.collapseGroup(previousGroup);
            previousGroup = groupPosition;
        }
    });

37voto

bos Points 3373

Je ne connais aucune méthode automatique pour cela, mais vous pouvez implémenter ExpandableListView.OnGroupClickListener , dans lequel vous exécutez collapseGroup() pour tous les groupes de listes sauf celui sur lequel vous cliquez. Cela fera ce que vous voulez.

0voto

Dasser Basyouni Points 1108

Vous pouvez également utiliser simplement le withOnlyOneExpandedItem() qui se trouve dans FastAdapter

qui est dans la bibliothèque externe FastAdapter par mikepenz

Par exemple, comme je l'utilise dans mon tiroir

 drawer.getAdapter().withOnlyOneExpandedItem(true);

-5voto

jhon Points 79

vous pouvez l'utiliser pour diverses conditions comme vous le souhaitez dans l'extension de la liste -

       expList.setOnChildClickListener(new OnChildClickListener() 
        {
         @Override
         public boolean onChildClick(ExpandableListView parent, View v,
           int childGroupPosition, int childPosition, long id) {

        // Log.e("OnChildClickListener", "OK "+childGroupPosition+"  "+childPosition);javainterviewquestion
             if(childGroupPosition ==0 && childPosition == 0)
             {

             }
             if(childGroupPosition ==0 && childPosition == 1)
             {

             } 

          return false; 
         }
        });

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X