Search code examples
androidexpandablelistview

Fatal exception while collapsing a expandable list in android


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;
            }
        });

Solution

  • 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;
                }
            });