安卓开发相关AndroidAndroid开发经验谈

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列和一行一列。

上一篇下一篇

猜你喜欢

热点阅读