可扩展列表视图 - 在展开另一个项目时折叠一个项目 (Android)

Expandable list view - collapse an item on expanding another item (Android)

我使用可扩展列表视图在我的导航抽屉项目中实现下拉功能。现在,如果我展开一个导航抽屉项目,然后展开另一个 - 两个项目都保持展开状态。我想要的是,当我展开一个项目,然后展开另一个项目时,之前的项目崩溃了。

我已经使用下面的代码来尝试做到这一点:

expandableListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
            @Override
            public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {
               
                        for (Map.Entry mapElement : expandabilityMap.entrySet()) {
                            int groupPos = (int) mapElement.getKey();
                            boolean isExpanded = (boolean) mapElement.getValue();
                            if (isExpanded) {
                                parent.collapseGroup(groupPos);
                            }

                            expandabilityMap.put(groupPosition, true);
                        }
                return false;


            }

        });

我有一个名为 'expandabilityMap' 的哈希图,其中我将导航抽屉项目位置存储为键,并将 'true' 或 'false' 作为值 - 如果该位置的项目是展开,否则为 false。

上面的代码应该在点击导航抽屉中的项目时执行以下操作:

  1. 从 hashmap 获取键和值。
  2. 如果有 'true' 值,则折叠相应位置的项目。
  3. 将当前单击的项目位置与 'true' 值一起放入 hashmap。
  4. 展开点击的项目。

但是在 运行 我的应用程序之后,当我展开一个项目时,它会展开。但是当我尝试展开另一个项目时,我的应用程序崩溃了。

我得到以下异常:

E/MessageQueue-JNI: java.lang.IndexOutOfBoundsException: Index: 1, Size: 0

我无法解决这个问题。请帮忙!

试试这个:

    expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
        int previousGroup = -1;
        @Override
        public void onGroupExpand(int groupPosition) {
            if (groupPosition != previousGroup)
                expandableListView.collapseGroup(previousGroup);
            previousGroup = groupPosition;
        }
    });