我有一个列表视图,它包含复选框。默认情况下,选中所有复选框,如果取消选中任何复选框,则位置将添加到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/

10-10 06:26