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?!
 
     
    