我有一个列表视图,它包含复选框。默认情况下,选中所有复选框,如果取消选中任何复选框,则位置将添加到mcheckedarraylist。现在我要从列表视图中删除所有未选中的位置。我使用了以下代码:
for(int i=0;i<=mCheckedArrayList.size;i++){
int removePosition=mCheckedArrayList.get(i);
mDisplayArrayList.remove(removePosition);
}
但它给了arrayindexoutofbounds异常。
最佳答案
您正在按错误的顺序删除对象。如果要删除循环中的元素,则应始终反转循环的顺序:
for(int i = mCheckedArrayList.size()-1 ; i >= 0; i--){
mDisplayArrayList.remove(mCheckedArrayList.get(i));
}
另一方面,如果您想先循环通过front(在不删除元素的情况下),则必须将循环结束条件更改为以下条件:
i < mCheckedArrayList.size()
感谢马丁的评论。要注意修改,可以始终使用数组的“final ref”。
final ArrayList<T> arrayListToBeUsed = mCheckedArrayList;
for(int i = arrayListToBeUsed .size()-1 ; i >= 0; i--){
arrayListToBeUsed .remove(arrayListToBeUsed .get(i));
}
关于android - 从ArrayList中删除对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7646828/