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

11
我正在寻找类似 isExpanded()isCollapsed() 的API,用于判断一个组是否展开或折叠。

2
也许是 isGroupExpanded(int groupPosition) 吗? - George Daramouskas
4个回答

16

你可以使用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)


2
正如@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;
}

2
如果您使用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;
}

使用这段简单的代码,您可以显示向上或向下的箭头。

最初的回答

1

在您的ExpandableListAdapter中的getGroupView()有一个参数,一个布尔值,代表着组是否展开。

来自(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表示组是否已扩展或折叠。

convertView要重用的旧视图(如果可能)。在使用之前,应检查此视图是否非null和适当类型。如果无法将此视图转换为显示正确数据,则此方法可以创建新视图。不能保证convertView先前已由getGroupView(int、boolean、View、ViewGroup)创建。

parent最终将附加到此视图的父级。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接