Android 从ExpandableListView中删除多个项目
我有一个ExpandableListView和一个复选框,可以根据用户的偏好删除项目。它“技术上”是有效的,但我遇到的问题是,我必须点击复选框4或5次,以实际删除所有需要的条目 你知道我遗漏了什么吗Android 从ExpandableListView中删除多个项目,android,list,expandablelistview,Android,List,Expandablelistview,我有一个ExpandableListView和一个复选框,可以根据用户的偏好删除项目。它“技术上”是有效的,但我遇到的问题是,我必须点击复选框4或5次,以实际删除所有需要的条目 你知道我遗漏了什么吗 chkOnline.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton butt
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();
}
}
});
chkOnline.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(已检查){
对于(int i=0;i
这里的问题是,您在删除列表项的同时更改了列表的大小:
假设您的列表大小为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]
我爱你,佩德罗+我都没想到
for(int i = devices.size() - 1; i >= 0; i--){
if(!devices.get(i).isOnline()){
devices.remove(i);
}
}