web-dev-qa-db-fra.com

Développer tous les enfants dans la vue liste extensible

Je souhaite 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… .. Y a-t-il une meilleure façon de faire cela?

71
Drejc

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!

68
Justin

si vous mettez ce code sur votre adaptateur, la liste d’extension reste ouverte et désactive sa fonction de fermeture. 

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

cela peut être un peu de travail autour, mais fonctionne comme il se doit. Il ouvre tout le groupe (au début) et peut être fermé à tout moment 

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

REMARQUE: Mettez ce code après avoir configuré l'adaptateur sur votre vue extensible, sinon cela pourrait provoquer une erreur. J'espère que ça aide. 

32
ralphgabb

remplissez d'abord l'adaptateur que de mettre ce code dans votre méthode oncreate

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

Élargir tous les groupes  

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

si vous souhaitez les rendre non-collapsable.

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

J'ai essayé les réponses énumérées mais j'ai trouvé que je peux utiliser la méthode getGroupCount () pour obtenir le nombre de groupes.

En utilisant cette méthode, je peux itérer et développer chaque groupe de ma ExpandableListView

for (int i = 0; i < myExpandableListView.getExpandableListAdapter().getGroupCount(); i++) {
      //Expand group
      myExpandableListView.expandGroup(i);
 }
0
Elenasys