Collapse all group except selected group in expandable listview android

后端 未结 8 956
故里飘歌
故里飘歌 2020-12-23 09:20

I\'m developing android application using expandable list view. Actually what I need is, I\'m listing group, which contains child.

If I select an unexpandable group

相关标签:
8条回答
  • 2020-12-23 09:21

    Have the current expanded group position stored in a variable. In onGroupExpanded do the following.

    private int lastExpandedPosition = -1;
    private ExpandableListView lv; //your expandable listview
    ...
    
    lv.setOnGroupExpandListener(new OnGroupExpandListener() {
    
        @Override
        public void onGroupExpand(int groupPosition) {
                if (lastExpandedPosition != -1
                        && groupPosition != lastExpandedPosition) {
                    lv.collapseGroup(lastExpandedPosition);
                }
                lastExpandedPosition = groupPosition;
        }
    });
    
    0 讨论(0)
  • 2020-12-23 09:25

    If the ExpandableListView has more than 2 groups:

    expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
        @Override
        public void onGroupExpand(int groupPosition) {
            for (int g = 0; g < expandableListAdapter.getGroupCount(); g++) {
                if (g != groupPosition) {
                    expandableListView.collapseGroup(g);
                }
            }
        }
    });    
    

    It will collapse all groups except the clicked one.

    0 讨论(0)
  • 2020-12-23 09:27
       elstListView1.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
            public void onGroupExpand(int groupPosition) {
                for(int i=0;i<listDataHeader.size();i++){
                    if(i==groupPosition){
                        //do nothing}
                        else{
                            elstListView1.collapseGroup(i);
                        }
                    }
                }
            });
    
    0 讨论(0)
  • 2020-12-23 09:32

    Use this code this will work

    expandableList.setOnGroupExpandListener(new OnGroupExpandListener() {
        int previousItem = -1;
    
        @Override
        public void onGroupExpand(int groupPosition) {
            if(groupPosition != previousItem )
                expandableList.collapseGroup(previousItem );
            previousItem = groupPosition;
        }
    });
    
    0 讨论(0)
  • 2020-12-23 09:40
    @Override
        public void onGroupExpanded(int groupPosition){
            //collapse the old expanded group, if not the same
            //as new group to expand
            if(groupPosition != lastExpandedGroupPosition){
                listView.collapseGroup(lastExpandedGroupPosition);
            }
    
            super.onGroupExpanded(groupPosition);           
            lastExpandedGroupPosition = groupPosition;
        }
    
    0 讨论(0)
  • 2020-12-23 09:41

    Try putting this in your ExpandableListAdapter, listView is a reference to the ExpandableListView itself. And lastExpandedGroupPosition is a integer member variable defined inside your ExpandableListAdapter.

     @Override
        public void onGroupExpanded(int groupPosition)
    
    {
    
    //collapse the old expanded group, if not the same
    
    //as new group to expand
    
    if(groupPosition != lastExpandedGroupPosition)
    
    {
    
      listView.collapseGroup(lastExpandedGroupPosition);
    
      }
    
            super.onGroupExpanded(groupPosition);           
            lastExpandedGroupPosition = groupPosition;
        }
    
    0 讨论(0)
提交回复
热议问题