美文网首页
实现recycleview水平拖拽排序

实现recycleview水平拖拽排序

作者: 阿里高级软件架构师 | 来源:发表于2020-05-20 22:07 被阅读0次

    今天我面试,面试官给了我一个需求,就是实现视频帧列表拖拽排序,网上的都是网格排序啊,或者垂直排序,也没有什么水平排序的资料,其实你根据逻辑,可以思考一下思路,我的思路如下:

    1、首先你得建立一个适配器,去装填数据,而且排列方式是水平的

    2、然后就得考虑一下事件的处理,因为拖拽的是recycleview的item,recycleview里面包含了一个工具类:ItemTouchHelper,你需要实现下面几个方法:

    getMovementFlags:这个是item移动的flag,就是判断item的拖拽方向

    onMove:这个方法是获取在移动中的事件

    onSelectedChanged:item长按选择(主要是为了提示用户你选择了当前的item)

    clearView:取消长按(为了恢复原状)

    当你new了这个类,需要和recycleview进行绑定,截屏一下源码:

    这个方法是为了将当前内存中的recycleview进行绑定,因为后面要实现这个类里面的接口,进行对应的拖拽操作

    我们先从简单的讲起:

    这个前面也说过,提示用户选择当前模块,调用手机震动

    这个是恢复后,保持排列,不会使数据错乱。之所以调用notifyDataSetChanged(),是为了刷新数据,让列表数据不会错乱

    最重要的来了,当你选中item然后实现拖动,就会触发这个事件。一个是被移动的item,另一个是要被装填的item;当被移动的位置在被装填位置的前面,那就递增寻找位置,进行数据的重新置换排列,反之就递减循环,最后面再刷新一下位置,如果你不刷新,那就是两个item层叠,错位

    相关文章

      网友评论

          本文标题:实现recycleview水平拖拽排序

          本文链接:https://www.haomeiwen.com/subject/tvsoohtx.html