問題描述
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);
}
}