77 votes

Développer tous les enfants dans la vue de liste extensible

Je voudrais développer tous les enfants pendant que la vue de liste extensible est remplie. Actuellement, mon code ressemble à ceci :

ExpandableListView listView = (ExpandableListView) findViewById(R.id.view);
int count = viewAdapted.getGroupCount();
for (int position = 1; position <= count; position++)
    listView.expandGroup(position - 1);

ce qui est assez moche. Existe-t-il un moyen plus agréable de faire cela ?

0 votes

Vous pouvez peut-être regarder ça : stackoverflow.com/questions/6849013/expandable-listview

0 votes

Apparemment, c'est la seule solution pour le moment. J'espère qu'il y a un attribut ou quelque chose de similaire.

0 votes

Bien sûr (position <= count) ... copier coller la faute de frappe

79voto

Justin Points 306

Vous pouvez le développer dans getGroupView dans votre adaptateur personnalisé :

@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    View v = super.getGroupView(groupPosition, isExpanded, convertView, parent);
    ExpandableListView mExpandableListView = (ExpandableListView) parent;
    mExpandableListView.expandGroup(groupPosition);
    return v;
}

Gluck !

13 votes

Cela les rend non cliquables

2 votes

@DavidLawson : oui, ma solution est de les étendre de manière fixe. Si vous voulez les étendre et qu'ils sont cliquables, vous devez gérer cela là où ExpandableListView est créé, comme la solution de Drejc.

39voto

user2851687 Points 118

En plaçant ce code sur votre adaptateur, la liste d'expansion restera ouverte et sa fonction de fermeture sera désactivée.

ExpandableListView mExpandableListView = (ExpandableListView) parent;
mExpandableListView.expandGroup(groupPosition);

Cela peut être un peu compliqué, mais cela fonctionne comme il se doit. Il ouvre tous les groupes (au début) et peut être fermé à tout moment.

 for ( int i = 0; i < groupList.getCount(); i++ ) {
    groupList.expandGroup(i);
 } 

NOTE : mettez ce code après avoir défini l'adaptateur sur votre vue extensible, sinon cela peut provoquer une erreur. J'espère que cela vous aidera.

24voto

Drejc Points 5424

Apparemment, c'est la seule solution pour le moment.

8voto

Jatin Devani Points 130

Remplissez d'abord l'adaptateur puis mettez ce code dans votre méthode oncreate

   int count = adapter.getGroupCount();
                for ( int i = 0; i < count; i++ ) 
                    listView.expandGroup(i);

7voto

VJ Vishal Jogiya Points 131

Élargir tous les groupes

for(int i=0; i < myAdapter.getGroupCount(); i++)
    myExpandableListView.expandGroup(i);

si vous souhaitez les rendre non effondrables.

myExpandableListView.setOnGroupClickListener(new OnGroupClickListener() {
  @Override
  public boolean onGroupClick(ExpandableListView parent, View v,int  groupPosition, long id) { 
    return true; 
  }
});

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