gpt4 book ai didi

android - 从 ExpandableListView 中删除多个项目

转载 作者:行者123 更新时间:2023-11-29 19:30:10 25 4
gpt4 key购买 nike

我有一个 ExpandableListView 和一个复选框,用于根据用户偏好删除项目。它“技术上”有效,但我遇到的问题是我必须单击复选框 4 或 5 次才能真正删除所有需要的条目。

知道我遗漏了什么吗?

chkOnline.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
for(int i = 0; i < devices.size(); i++){
if(!devices.get(i).isOnline()){
devices.remove(i);
}
}
adapter.notifyDataSetChanged();
}
}
});

最佳答案

这里的问题是您在删除列表项的同时更改了列表的大小:

假设您的列表大小为 3:

//first iteration
i = 0, limit = 2 (i < size())
l = [1,2,3]
1 is online => l = [2,3]

//second iteration
i = 1, limit = 1 (because size() now returns 2 and i < size())
l = [2,3]

循环结束时没有检查原始列表中的最后一个元素 (3)。

要解决这个问题,您可以简单地从头到尾迭代:

for(int i = devices.size() - 1; i >= 0; i--){
if(!devices.get(i).isOnline()){
devices.remove(i);
}
}

关于android - 从 ExpandableListView 中删除多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40184317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com