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

Posted

技术标签:

【中文标题】如何检查组是不是在 Android ExpandableListView 中展开或折叠?【英文标题】:How to check if group is expanded or collapsed in Android ExpandableListView?如何检查组是否在 Android ExpandableListView 中展开或折叠? 【发布时间】:2015-05-08 14:21:47 【问题描述】:

我正在寻找像 isExpanded() 或 isCollapsed() 这样的 api,它可以告诉我组是展开还是折叠。

【问题讨论】:

isGroupExpanded (int groupPosition) 或许? @GeorgeD 哇,谢谢,我完全错过了。 【参考方案1】:

您可以使用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】:

如果你使用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】:

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 旧视图以重用,如果可能的话。在使用之前,您应该检查此视图是否为非空且类型合适。如果无法将此视图转换为显示正确的数据,则此方法可以创建一个新视图。不能保证之前已由 getGroupView(int, boolean, View, ViewGroup) 创建了 convertView。 parent 此视图最终将附加到的父级

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于如何检查组是不是在 Android ExpandableListView 中展开或折叠?的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中检查网络是不是连接到wifi [重复]

如何在 android 中检查我的 android 设备是不是有互联网连接? [复制]

如何检查 JobService 是不是在 android 中运行?

如何在android中检查当前的互联网连接是不是可用

如何在android中检查电话号码是不是有效

如何检查android是不是要重新创建活动或销毁?