ExpandableListView - 自动折叠组

ExpandableListView - collapse groups automatically

我使用自定义适配器创建了一个 ExpandableListView,并且一切正常,包括单击、折叠和展开事件。如果有人需要有关可扩展列表视图的帮助,我遵循了以下教程:http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/.

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

项目 1

项目 2

项目 3

如果我单击项目 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);
                    }
                }
            }
        });