如何在Android ExpandableListView中检查组是展开还是折叠?

时间:2015-03-06 21:25:18

标签: android expandablelistview collapse expand expandablelistadapter

我正在寻找像isExpanded()或isCollapsed()这样的API来告诉我某个群组是展开还是折叠。

4 个答案:

答案 0 :(得分:13)

您可以使用 isGroupExpanded

 expListViewObj.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {

                @Override
                public boolean onGroupClick(ExpandableListView parent, View v,
                                            int groupPosition, long id) {

                    if(parent.isGroupExpanded(groupPosition))
                    {

                     // Do your Staff
                    }
                    else{

                       // Expanded ,Do your Staff

                    }


                    return false;
                }
            });

有关详细信息,请访问此处

  

http://developer.android.com/reference/android/widget/ExpandableListView.html#setOnGroupClickListener(android.widget.ExpandableListView.OnGroupClickListener)

答案 1 :(得分:1)

getGroupView()上的ExpandableListAdapter中有一个参数,一个表示该组扩展的布尔值。

From(http://developer.android.com/reference/android/widget/ExpandableListAdapter.html#getGroupView(int,boolean,android.view.View,android.view.ViewGroup)

  

获取显示给定组的视图。此视图仅适用于该组 - 将使用getChildView(int,int,boolean,View,ViewGroup)获取组的子视图。

     

参数

     
    

groupPosition返回视图的组的位置

         

isExpanded组是展开还是折叠

         如果可能的话,

将旧视图转换为重用。在使用之前,您应该检查此视图是否为非null且具有适当的类型。如果无法转换此视图以显示正确的数据,则此方法可以创建新视图。不能保证convertView以前是由getGroupView(int,boolean,View,ViewGroup)创建的。     parent此视图最终将附加到

的父级   

答案 2 :(得分:1)

如果您使用BaseExpandableListAdapter类,则可以使用getGroupView()覆盖方法。

public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {

    // Here is your expand list view parent id
    // b specify that parent expand or not.

    .............

    if(b){
        imdDownArrow.setVisibility(View.GONE);
        imdUpArrow.setVisibility(View.VISIBLE);
    }else{
        imdDownArrow.setVisibility(View.VISIBLE);
        imdUpArrow.setVisibility(View.GONE);
    }
    ...............
    return view;
}

因此,使用此简单代码,您可以向上或向下显示箭头

答案 3 :(得分:0)

正如@George D所写,有ExpandableListView .isGroupExpanded(int groupPosition)方法。那么你可以添加代码来获得扩展组位置或-1

public int getExpandedGroupPosition() {
    for (int i = 0; i < listView.getExpandableListAdapter().getGroupCount(); i++) {
        if ( listView.isGroupExpanded(i) ) {
            return i;
        }
    }

    return -1;
}