可扩展列表视图 - 在展开另一个项目时折叠一个项目 (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。
上面的代码应该在点击导航抽屉中的项目时执行以下操作:
- 从 hashmap 获取键和值。
- 如果有 'true' 值,则折叠相应位置的项目。
- 将当前单击的项目位置与 'true' 值一起放入 hashmap。
- 展开点击的项目。
但是在 运行 我的应用程序之后,当我展开一个项目时,它会展开。但是当我尝试展开另一个项目时,我的应用程序崩溃了。
我得到以下异常:
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;
}
});
我使用可扩展列表视图在我的导航抽屉项目中实现下拉功能。现在,如果我展开一个导航抽屉项目,然后展开另一个 - 两个项目都保持展开状态。我想要的是,当我展开一个项目,然后展开另一个项目时,之前的项目崩溃了。
我已经使用下面的代码来尝试做到这一点:
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。
上面的代码应该在点击导航抽屉中的项目时执行以下操作:
- 从 hashmap 获取键和值。
- 如果有 'true' 值,则折叠相应位置的项目。
- 将当前单击的项目位置与 'true' 值一起放入 hashmap。
- 展开点击的项目。
但是在 运行 我的应用程序之后,当我展开一个项目时,它会展开。但是当我尝试展开另一个项目时,我的应用程序崩溃了。
我得到以下异常:
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;
}
});