Java 已从数组列表中删除始终最后的元素

Java 已从数组列表中删除始终最后的元素,java,arraylist,Java,Arraylist,这是我的代码: for (int i=0; i<mListOfItemsToDelete.size(); i++) { receivedMessages.remove(mListOfItemsToDelete.get(i).intValue()); Log.e("position:", mListOfItemsToDelete.get(i).toString()); } mListOfItemsToDelete

这是我的代码:

for (int i=0; i<mListOfItemsToDelete.size(); i++) {
            receivedMessages.remove(mListOfItemsToDelete.get(i).intValue());
            Log.e("position:", mListOfItemsToDelete.get(i).toString());
        }
        mListOfItemsToDelete.clear();
和我的日志(我选择索引为1和2的项目-我的
ArrayList
有5个元素,索引为0-4):

请注意,
arrayOUT
位于我调用上述方法的位置下方一处

它从
ArrayList
中正确删除,但为什么我的
ListView
总是删除最后一个元素

试试这个: receivedMessages.remove(mListOfItemsToDelete[i])

试试这个: receivedMessages.remove(mListOfItemsToDelete[i])

对我来说,这很有效:

ArrayList some_data=new ArrayList();
ArrayList索引_to_delete=新建ArrayList();
一些数据。添加(“一”);
一些数据。添加(“两个”);
一些数据。添加(“三”);
一些数据。添加(“四”);
一些数据。添加(“五”);
删除索引。添加(4);
删除索引。添加(2);
对于(int i=0;i
对我来说,这很有效:

ArrayList some_data=new ArrayList();
ArrayList索引_to_delete=新建ArrayList();
一些数据。添加(“一”);
一些数据。添加(“两个”);
一些数据。添加(“三”);
一些数据。添加(“四”);
一些数据。添加(“五”);
删除索引。添加(4);
删除索引。添加(2);

for(int i=0;i
receivedMessages.remove(0);
总是删除第一个元素…你在for循环中这样做了吗?可能是的,我知道它应该删除第一个元素…但它总是删除最后一个元素-在调试模式下我看到了。如果我选择3个元素(
receivedMessages.remove(0);
)删除最后3个对象…我想从位置(索引)删除对象0例如,它仍然从最后一个位置删除对象…您应该向我们显示
receivedMessages
的类型。还要注意,如果
mListOfItemsToDelete
不是按降序排列,则在第一次删除后,索引将关闭。
receivedMessages.remove(0);
总是删除第一个元素…你在for循环中这样做吗?可能是的,我知道它应该删除第一个元素…但它总是删除最后一个元素-在调试模式下,我看到了。如果我选择3个元素,它(
接收消息。删除(0);
)会删除最后3个对象…我想从位置删除对象(索引)例如,它仍然从最后一个位置删除对象…您应该向我们显示
receivedMessages
的类型。还请注意,如果
mListOfItemsToDelete
不是按降序排列,则在第一次删除后索引将关闭。但这是
ArrayList
,我只能使用:
mListOfItemsToDelete.get获取元素(i) 
int indexToRemove=mListOfItemsToDelete.get(i);receivedMessages.remove(indexToRemove);mListOfItemsToDelete的数据类型是整数,将其更改为“int”或使用上面的代码,应该对您有效。但这是
ArrayList
,我只能使用:
mListOfItemsToDelete.get(i)获取元素
int indexToRemove=mListOfItemsToDelete.get(i);receivedMessages.remove(indexToRemove);mListOfItemsToDelete的数据类型是整数,请将其更改为“int”或使用上述代码,它应该适用于您。我有相同的代码(唯一的区别是
某些数据的类型
,它是
消息模型
而不是
字符串
…这表明我的代码似乎很好。对吗?我得到了相同的代码(唯一的区别是
某些数据的类型
,它是
MessageModel
而不是
String
…这表明我的代码看起来不错。我说的对吗?
private void deleteSelectedMessages() {
        Log.i("arrayIN_:", receivedMessages.toString());
        for (int i=0; i<mListOfItemsToDelete.size(); i++) {
            //TODO: receivedMessages.remove delete last elements, not selected...
            receivedMessages.remove(Integer.parseInt(mListOfItemsToDelete.get(i).toString()));
            Log.e("position:", mListOfItemsToDelete.get(i).toString());
            Log.i("arrayFOR" + i + ":", receivedMessages.toString());
        }
        Log.i("arrayIN:", receivedMessages.toString());
        mListOfItemsToDelete.clear();
    }
04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayIN_::
[app.com.mmm.models.MessageModel@3ae1bbc, 
app.com.mmm.models.MessageModel@cfd4745, 
app.com.mmm.models.MessageModel@17ec8e9a, 
app.com.mmm.models.MessageModel@2847d3cb, 
app.com.mmm.models.MessageModel@231f37a8]

04-04 16:48:29.536 5829-5829/app.com.mmm E/position:: 2

04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayFOR0:: 
[app.com.mmm.models.MessageModel@3ae1bbc, 
app.com.mmm.models.MessageModel@cfd4745, 
app.com.mmm.models.MessageModel@2847d3cb, 
app.com.mmm.models.MessageModel@231f37a8]

04-04 16:48:29.536 5829-5829/app.com.mmm E/position:: 1

04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayFOR1:: 
[app.com.mmm.models.MessageModel@3ae1bbc, 
app.com.mmm.models.MessageModel@2847d3cb, 
app.com.mmm.models.MessageModel@231f37a8]

04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayIN:: 
[app.com.mmm.models.MessageModel@3ae1bbc, 
app.com.mmm.models.MessageModel@2847d3cb, 
app.com.mmm.models.MessageModel@231f37a8]

04-04 16:48:29.536 5829-5829/app.com.mmm I/arrayOUT:: 
[app.com.mmm.models.MessageModel@3ae1bbc, 
app.com.mmm.models.MessageModel@2847d3cb, 
app.com.mmm.models.MessageModel@231f37a8]
 ArrayList<String> some_data=new ArrayList<String>();
    ArrayList<Integer> indexes_to_delete=new ArrayList<Integer>();

 some_data.add("one");
        some_data.add("two");
        some_data.add("three");
        some_data.add("four");
        some_data.add("five");

        indexes_to_delete.add(4);
        indexes_to_delete.add(2);

        for(int i=0;i<indexes_to_delete.size();i++) {
            some_data.remove(indexes_to_delete.get(i).intValue());
        }