让我假装我
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);
}
编辑:对不起伙计我的问题是另一个;但我认为这与删除列表项有关。感谢大家的帮助
答案 0 :(得分:1)
我猜你在删除方法中使用了错误的参数。在Collection界面中,您有以下方法:
List还有一个删除方法:
但在这种情况下,您要删除某个特定索引处的对象。
您可以尝试使用Collection界面中的方法移动元素:
mIds.remove(Integer.valueOf(j));
答案 1 :(得分:0)
我认为你混淆了remove()
的两个实现。一个人收到Object
,另一个收到int
,每个案件的行为都不同。
答案 2 :(得分:0)
List_Of_Array.remove(index);
然后更新它
notifyDataSetChanged();
答案 3 :(得分:0)
如果您考虑从List
中删除元素的值,List
中的所有元素都将删除,因为所有元素都具有相同的值。
考虑index
删除元素
所以只需使用
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()
用完了一个循环,所以肯定会删除一个或零个元素。
答案 4 :(得分:0)
mIds.remove(2)将删除索引2上的元素。
mIds.remove(Integer.valueOf(10))将删除第一个匹配项(如果存在)。在这种情况下它存在。