ExpandableListView - 自动折叠组

Posted

技术标签:

【中文标题】ExpandableListView - 自动折叠组【英文标题】:ExpandableListView - collapse groups automatically 【发布时间】:2015-11-18 07:40:24 【问题描述】:

我创建了一个带有自定义适配器的 ExpandableListView,所有的工作都完美无缺,包括点击、折叠和展开事件。如果有人在可扩展列表视图方面需要帮助,我按照以下教程操作:http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/。

我现在想在我的 setOnGroupExpandListener 方法中编写代码来折叠除当前关注的组之外所有其他打开的组。 (内容感知 - 在某种意义上)澄清一下,如果我有以下几点:

项目 1

子项 1 子项 2

第 2 项

子项 1

第 3 项

子项 1 子项 2

如果我单击第 1 项,它应该展开第 1 项(这已经有效)并且它应该为我折叠第 2 项和第 3 组。这可能吗?我该如何实现?

这是我当前的 setOnGroupExpandListener:

    gpsMenuListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() 
        @Override
        public void onGroupExpand(int groupPosition) 
            Toast.makeText(getApplicationContext(), "Expanded: " + gpsMenuListDataHeader.get(groupPosition).toString(), Toast.LENGTH_SHORT).show();
        
    );

如您所见,我目前只有一个 Toast 可以打印消息,但我想添加折叠功能。

【问题讨论】:

嗨,只需遍历您当前的组并折叠主题...我已经在我的答案中向您发布了代码 您好 Neo,感谢您的快速回复。在我阅读您的答案之前,我设法弄清楚了这一点,但我感谢您的所有帮助! 【参考方案1】:
listView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() 
            @Override
            public void onGroupExpand(int groupPosition) 
                YourExpandableListAdapter customExpandAdapter = (YourExpandableListAdapter)listView.getExpandableListAdapter();
                if (customExpandAdapter == null) return;
                for (int i = 0; i < customExpandAdapter.getGroupCount(); i++) 
                    if (i != groupPosition) 
                        listView.collapseGroup(i);
                    
                
            
        );

【讨论】:

毫无疑问,它会起作用,但它真的是一个好方法吗?有没有更好的办法?【参考方案2】:

您需要运行整个列表并折叠除您当前所在的组之外的所有其他组:

@Override
         public void onGroupExpand(int groupPosition)
         
            int c = gpsMenuListView.getCount();
            for ( int i = 0; i < c; i++)
            
               if ( i != groupPosition )
                  gpsMenuListView.collapseGroup(i);
            
         

【讨论】:

以上是关于ExpandableListView - 自动折叠组的主要内容,如果未能解决你的问题,请参考以下文章

255ExpandableListView(可折叠列表)的基本使用

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

如何在expandablelistview中折叠组视图上方和下方的所有子视图?

ExpandableListView 组视图 展开默认

将焦点保存在 ExpandableListView 中的展开组上

ExpandableListView的基本使用