gpt4 book ai didi

java - 从数组列表中始终删除最后一个元素

转载 作者:行者123 更新时间:2023-11-29 09:31:51 25 4
gpt4 key购买 nike

这是我的代码:

for (int i=0; i<mListOfItemsToDelete.size(); i++) {
receivedMessages.remove(mListOfItemsToDelete.get(i).intValue());
Log.e("position:", mListOfItemsToDelete.get(i).toString());
}
mListOfItemsToDelete.clear();

receivedMessages 包含我在 ListView 中使用的消息的所有项目 (MessagesModel)。mListOfItemsToDelete 包含要从 receivedMessages 中删除的项目索引列表(例如 [4, 2, 1] - 始终排序和反转)。

并且 receivedMessages.remove(mListOfItemsToDelete.get(i).intValue()); 总是从 ArrayList 的末尾删除元素(例如,如果我选择 2 个元素,它从末尾删除了 2 个元素)。这行代码让我抓狂 - 你知道什么可以帮助正确删除项目吗?

编辑:在我的代码中输入后,我在我的日志中发现了一些非常奇怪的东西:

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

还有我的日志(我选择索引为 1 和 2 的项目 - 我的 ArrayList 有 5 个元素,按索引来说是 0-4):

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]

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

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

最佳答案

For me this works :

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

My some_data now contains "one","two" and "four"

关于java - 从数组列表中始终删除最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36333155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com