This is my code:
for (int i=0; i<mListOfItemsToDelete.size(); i++) {
receivedMessages.remove(mListOfItemsToDelete.get(i).intValue());
Log.e("position:", mListOfItemsToDelete.get(i).toString());
}
mListOfItemsToDelete.clear();
receivedMessages
contains all items (MessagesModel) of messages which I am using in ListView.
mListOfItemsToDelete
contains list of items index to remove from receivedMessages
(e.g. [4, 2, 1]
- always sorted and reversed).
And receivedMessages.remove(mListOfItemsToDelete.get(i).intValue());
always removed elements from the end of ArrayList
(e.g. if I choose 2 elements, it removes 2 elements from the end). This line of code makes me crazy - have you any idea what can help to delete items correctly?
EDIT: I found something very strange in my Logs after input it in my code:
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();
}
And my logs (I choose items with indexes 1 and 2 - my ArrayList
has got 5 elements, 0-4 in index speaking):
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]
Note that arrayOUT
is placed one below place where I call mentioned method...
It deletes correctly from ArrayList
, but why my ListView
delete always last elements?!