用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版权协议,转载请附上原文出处链接和本声明。