I was struggling with collapsing a group in expandable list view, the thing i need is, i need to collapse all group except selected group. I tried below code, its working when current position is less than previous position, in vice-versa i'm getting a fatal exception and also i'm unable to caught it.
elv.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
@Override
public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
if (lastExpandedGroupPosition != -1 && groupPosition != lastExpandedGroupPosition) {
if(lastExpandedGroupPosition>groupPosition){
elv.collapseGroup(lastExpandedGroupPosition);
}else{
Log.v("last expand value", ""+lastExpandedGroupPosition);
Log.v("groupPosition", ""+groupPosition);
Log.v("count", ""+elv.getCount());
elv.collapseGroup(lastExpandedGroupPosition);
}
}
lastExpandedGroupPosition = groupPosition;
return false;
}
});
I solved this by changing setOnGroupClickListener to setOnGroupExpandListener
elv.setOnGroupExpandListener(new OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
// TODO Auto-generated method stub
if (lastExpandedGroupPosition != -1 && groupPosition != lastExpandedGroupPosition) {
if(lastExpandedGroupPosition>groupPosition){
elv.collapseGroup(lastExpandedGroupPosition);
}else{
Log.v("last expand value", ""+lastExpandedGroupPosition);
Log.v("groupPosition", ""+groupPosition);
Log.v("count", ""+elv.getCount());
elv.collapseGroup(lastExpandedGroupPosition);
}
}
lastExpandedGroupPosition = groupPosition;
}
});