如何从arrayList中删除一个项目

时间:2014-01-28 12:47:15

标签: java android

让我假装我

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);
}

编辑:对不起伙计我的问题是另一个;但我认为这与删除列表项有关。感谢大家的帮助

5 个答案:

答案 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))将删除第一个匹配项(如果存在)。在这种情况下它存在。