假设我有
List<Integer> mIds = new ArrayList<Integer>();
mIds.add(0,10);
mIds.add(1,10);
mIds.add(2,10);
我只想删除 listview
中的一项,但当我这样做时,它会删除 ArrayList
中的所有项目。你知道为什么吗?
int j=-1;
for (int i=0; i < mIds.size(); i++){
if (mIds.get(i) == modifier.getId()){
j=i;
break;
}
}
if (j != -1){
mIds.remove(j);
}
编辑:抱歉大家,我的问题是另一个问题;但我认为这与删除列表项有关。感谢大家的帮助
最佳答案
如果您考虑从 List
中删除元素的值,则 List
中的所有元素都将删除,因为所有元素都具有相同的值。
考虑索引
来删除元素
所以只需使用
List<Integer> mIds = new ArrayList<Integer>();
mIds.add(0,10);
mIds.add(1,10); // *
mIds.add(2,10);
mIds.remove(1); // 1 is index
现在 *
元素将被删除。
针对您的情况
mIds.remove(modifier.getId());
现在考虑您的代码。
List<Integer> mIds = new ArrayList<Integer>();
mIds.add(0,10);
mIds.add(1,10);
mIds.add(2, 10);
int j=-1;
for (int i=0; i < mIds.size(); i++){
if (mIds.get(i) == 10){ // 0th element is 10
j=i; //then j=0
break; // breaks the for loop
}
}
if (j != -1){ // j=0 and this is true
mIds.remove(j); // now 0th element will remove
}
所以你的代码工作正常。没有办法删除所有元素,因为这个 remove()
在循环之外运行,所以肯定会删除一个或零个元素。
关于java - 如何从 arrayList 中删除一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21405928/