ExpandableListView - 自动折叠组
ExpandableListView - collapse groups automatically
我使用自定义适配器创建了一个 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,但我想添加折叠功能。
您需要 运行 整个列表并折叠除您当前所在的组之外的所有其他组:
@Override
public void onGroupExpand(int groupPosition)
{
int c = gpsMenuListView.getCount();
for ( int i = 0; i < c; i++)
{
if ( i != groupPosition )
gpsMenuListView.collapseGroup(i);
}
}
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);
}
}
}
});
我使用自定义适配器创建了一个 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,但我想添加折叠功能。
您需要 运行 整个列表并折叠除您当前所在的组之外的所有其他组:
@Override
public void onGroupExpand(int groupPosition)
{
int c = gpsMenuListView.getCount();
for ( int i = 0; i < c; i++)
{
if ( i != groupPosition )
gpsMenuListView.collapseGroup(i);
}
}
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);
}
}
}
});