RecyclerView 拖拽item后顺序错乱

问题描述

recyclerview实现(2行4列)拖拽图标能调整顺序。同一行图标拖拽后保存无异常,不同行图标拖拽切换后保存出现顺序对不上的情况。

问题原因

关键代码:

Collections.swap(list,oldPosition,newPosition);

itemMoved时并非简单的将oldPosition与newPosition item进行替换,而是将所有移动的item依次进行替换。如果是同一行图标移动,移动过程中相邻的两个item都进行了交换,因此不会有问题。

解决方案

        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);
            }
        }

你可能感兴趣的:(RecyclerView 拖拽item后顺序错乱)