RecyclerView拖拽排序位置錯亂問題
阿新 • • 發佈:2019-01-03
前言
用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); } }
最後
不細心導致的坑,害我花好長時間修復它,記下來,希望對別人有幫助。