I want to make only one item in the parent list expand at a time, my code for the onCreate is currently the following. (It works as I want, But the method to allow only one pare
Easiest approach
You can implement ExpandableListView.OnGroupExpandListener, in where you run collapseGroup() for all list groups except the one being clicked. This will do what you want.
expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
int previousGroup = -1;
@Override
public void onGroupExpand(int groupPosition) {
if(groupPosition != previousGroup)
expandableList.collapseGroup(previousGroup);
previousGroup = groupPosition;
}
});
Iram Bukhari's answer is working fine. but i have did once change:
private static int prev = -1;
// and OnGroupExpandListener implement
mExpandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
if(prev!=-1 && prev!=groupPosition )
{
mExpandableList.collapseGroup(prev);
}
prev=groupPosition;
}
});
I have added prev!=groupPosition as extra condition. Because if
item 1 has clicked(opened)
item 1 has clicked(closed)
item 1 has clicked(Not opening. because prev has same position so the item is opened and collapsed immediatly )
After Adding the condition
item 1 has clicked(opened)
item 1 has clicked(closed)
item 1 has clicked(opened)