1. 程式人生 > >RecyclerView拖拽排序位置錯亂問題

RecyclerView拖拽排序位置錯亂問題

前言

用recyclerview實現拖拽的人不少,可能會遇到拖拽完順序會錯亂的問題

我當時用了recyclerView寫了一個選擇照片的佈局,是這樣交換位置的

// 犯了一個很嚴重的錯誤,單純的以為拖拽就是兩個位置相互交換,實際上不是這樣的
Collections.swap(mDataList, beforePosition, afterPosition);
mAdapter.notifyItemMoved(beforePosition, afterPosition);

比如說5張圖片

將1拖到5後面,我一開始以為的是這樣:

Collections.swap(mDataList, beforePosition, afterPosition);

其實我們用recyclerview拖拽後的真實的情況是這樣的:

所以找到錯誤的根源了,還是不細心的問題,所以改為:

                if (beforePosition < afterPosition) {
                    //從上往下拖動,每滑動一個item,都將list中的item向下交換,向上滑同理。
                    for (int i = beforePosition; i < afterPosition; i++) {
                        Collections.swap(mDataList, i, i + 1);
                    }
                } else {
                    for (int i = beforePosition; i > afterPosition; i--) {
                        Collections.swap(mDataList, i, i - 1);
                    }
                }

最後

不細心導致的坑,害我花好長時間修復它,記下來,希望對別人有幫助。