Android利用BaseRecyclerViewAdapter
2019-08-14 本文已影响21人
儿歌八万首
最近项目需要一个多种类型图片之间的互相拖拽的效果,之前,由于是采用RecleView嵌套RecleView实现的,所以只能支持单个RecleView之间的相互拖拽,后来采用BaseRecyclerViewAdapterHelper开源库的多布局使用一个RecleView来实现不同类型的拖拽功能。类型是于下面这种布局,不同类型的图片可以互相拖拽:
最终实现效果图新建一个可以支持拖拽的adapter,继承自BaseItemDraggableAdapter,由于我们要实现拖拽功能,所以自能通过代理的方式来实现多布局,具体可以参考开源库BaseRecyclerViewAdapterHelper,实例代码如下:
不知道简书怎么上传代码,只能截图了重写ItemDragAndSwipeCallback,实现getMovementFlags和onMove方法,可以在getMovementFlags方法中限制某些item不支持拖动,在onMove方法中限制拖动结束后item不能被替换:
ItemDragAndSwipeCallback设置adapter.enableDragItem来激活拖拽功能。
激活拖拽功能可以设置adapter的setOnItemDragListener回调,重写onItemDragMoving,onItemDragStart,onItemDragEn3个方法,在这三个方法中来进行拖拽的业务逻辑处理。
最后,将GridLayoutManager根据类型设置成一行3列和一行一列。