RecyclerView 拖拽item后順序錯(cuò)亂

問題描述

recyclerview實(shí)現(xiàn)(2行4列)拖拽圖標(biāo)能調(diào)整順序。同一行圖標(biāo)拖拽后保存無異常,不同行圖標(biāo)拖拽切換后保存出現(xiàn)順序?qū)Σ簧系那闆r。

問題原因

關(guān)鍵代碼:

Collections.swap(list,oldPosition,newPosition);

itemMoved時(shí)并非簡單的將oldPosition與newPosition item進(jìn)行替換,而是將所有移動(dòng)的item依次進(jìn)行替換。如果是同一行圖標(biāo)移動(dòng),移動(dòng)過程中相鄰的兩個(gè)item都進(jìn)行了交換,因此不會(huì)有問題。

解決方案

        if (oldPosition < newPosition) {
            for (int i = oldPosition; i < newPosition; i++) {
                Collections.swap(list, i, i + 1);
            }
        } else {
            for (int i = oldPosition; i > newPosition; i--) {
                Collections.swap(list, i, i - 1);
            }
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容