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

最后

不细心导致的坑,害我花好长时间修复它,记下来,希望对别人有帮助。


版权声明:本文为pengbo6665631原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。