这是我的代码:
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
删除始终是最后一个元素?!
答案 0 :(得分:0)
对我而言,这有效:
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());
}
我的some_data现在包含&#34;一个&#34;,&#34;两个&#34;和&#34;四&#34;
答案 1 :(得分:-2)
试试这个: receivedMessages.remove(mListOfItemsToDelete [I]);