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中折叠组视图上方和下方的所有子视图?