Drejc
Drejc

Reputation: 14286

Expand all children in expandable list view

I would like to expand all children while the expandable list view is populated. Currently my code looks like this:

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

which is pretty ugly. Is there a nicer way to do this?

Upvotes: 76

Views: 64720

Answers (5)

Jorgesys
Jorgesys

Reputation: 126563

I have tried the responses listed but i found that i can use the getGroupCount() method to get the number of groups.

Using this method i can iterate and expand every group of my ExpandableListView

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

Upvotes: 1

ralphgabb
ralphgabb

Reputation: 10538

putting this code on your adapter will make the expandlist to stay open, and disables its closing function.

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

this may be a little work around but works how it should be. It opens all group ( at start ) and can be close any time

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

NOTE : put this code after setting adapter on your expandable view, or else it may cause error. Hope it helps.

Upvotes: 39

VJ   Vishal Jogiya
VJ Vishal Jogiya

Reputation: 339

Expanding all groups

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

if you wish to make them unCollapseable.

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

Upvotes: 7

Jatin Devani
Jatin Devani

Reputation: 190

first fill the adapter than put this code in your oncreate method

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

Upvotes: 8

Justin
Justin

Reputation: 4530

You can expand it in getGroupView in your custom adapter:

@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!

Upvotes: 79

Related Questions