web-dev-qa-db-fra.com

Afficher un seul enfant de la liste extensible à la fois

Est-il possible d'élargir un seul enfant d'une ExpandableListView à la fois, ainsi ouvrir un deuxième enfant fermerait l'enfant précédemment ouvert?

38
steve-gregory

Je ne suis au courant d'aucune méthode automatique pour cela, mais vous pouvez implémenter ExpandableListView.OnGroupClickListener, dans lequel vous exécutez collapseGroup() pour tous les groupes de la liste, à l'exception de celui sur lequel vous avez cliqué. Cela fera ce que vous voulez.

36
bos

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;
        }
    });
130
Blundell

Aussi, vous pouvez simplement utiliser le withOnlyOneExpandedItem() qui se trouve dans FastAdapter

qui est dans FastAdapter External Library by mikepenz

Par exemple, je l'utilise dans mon tiroir

drawer.getAdapter().withOnlyOneExpandedItem(true);
0
Dasser Basyouni