专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何实现知识星球列表拖拽功能_CSS学习

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/4 4:02:40       共计:3606 浏览

如何实现知识星球列表拖拽功能?

你好,你问这个就算问对了,我之前专门为这个功能写了一篇文章在我的知识星球【Hi Android】中,我们来看下如何实现吧:

可以看到,要想实现这个功能,需要大致的分为三个要求:

1.下拉刷新2.拖拽排序3.不能拖拽最后的Item

有了这三个要求之后,我们就可以着手来实现了,首先,我们要实现这个列表,这个比较简单,我们使用RecyclerView即可实现,但是这里应该是多个Item,所以我们需要多Type来做,这里来看下我们的适配器的代码:

这是一个很标准的RecyclerView适配器的Adapter,我定义了两个Type来区别对待普通的item和最后的item,接着我就可以模拟一点数据了:

数据和适配器都有了,我们就可以运行来看下效果了:

到这里我们的基本样式算是实现了,紧接着,我们需要拖拽,拖拽比较简单,我们可以用ItemTouchHelper来实现,ItemTouchHelper的callback中,我们需要实现如下的方法:

getMovementFlags 根据布局管理器控制拖拽方向onMove 移动并计算排序isLongPressDragEnabled 是否支持长按拖拽onSelectedChanged 选中的item改变clearView 松手改变状态

了解了这些之后我们就可以来实现代码了:

在这段代码中我会详细给大家介绍,首先是getMovementFlags,其实很简单,我获取到你当前的布局管理器,如果是LinearLayoutManager,那么只支持上下,如果是GridLayoutManager,那么上下左右都是可以拖拽的,接着来看onMove,这个是关键的方法,里面获取到拖拽前后的对象,这里我直接判断你拖拽移动的对象是否是最后一个,如果是,那么就不进行交换,如果不是,继续往下走,最后刷新适配器,就能实现拖拽移动了,onSelectedChanged,这个只是选中改变的回调,我们启动震动效果就好了,ok,先来基本的效果都已经实现了,至于下拉刷新,我直接使用了一个SwipeRefreshLayout来实现的,就不多说了,来运行看下效果:

有兴趣可以加入我的星球:Hi Android , 里面可都是我手撸的新鲜文章,高质量你值得拥有!

注意,因为悟空问答是不支持Gif的,所以效果图没有动态效果,原文地址:

https://articles.zsxq.com/id_90mv1na44xik.html

希望我的答案对你有所帮助,谢谢。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:全栈开发中如何展示文章_CSS学习 | ·下一条:核武器的威力有多大_CSS学习

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有