下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android一步步带你在RecyclerView上面实现拖放和滑动删除功能
先给大家展示下大概效果图:Android上面有许多的教程,库和示例,在RecyclerView上面实现"拖放"和"滑动删除"功能.尽管有更新,更好的方法可用,但是大多数人依然使用旧的View.OnDragListener和RomanNurik的SwipeToDismiss方式.除了经常使用GestureDetector和onInterceptTouchEvent之外,几乎很少有人使用新的API,要不然的话,实现就复杂.事实上真的有十分简单的方式在RecyclerView上面添加这两个功能.它只要求一个类,而且这个类已经是Android支持包的一部分.ItemTouchHelperItemTouchHelper是一个强大的通用程序,在RecyclerView上面添加"拖放"和"滑动删除"时,你所需要做的所有事情,它都会负责处理.它是RecyclerView.ItemDecoration的子类,这意味着它可以轻易地添加到任何已经存在的LayoutManager和Adapter上面!它不会影响添加到item上的动画,并且支持类别严格的"拖",以及"放"时的动画,还可以支持更多.准备:首先,我们所需要的是添加RecyclerView的依赖:使用ItemTouchHelper和ItemTouchHelper.Callback:为了使用ItemTouchHelper,你将创建一个ItemTouchHelper.Callback,这是一个接口,允许你监听"move"和"swipe"事件,而且你可以通过Callback来控件已选中view的状态,并且可以改变该view的默认动画.如果只是想要一个基础实现,你可以使用SimpleCallback这个帮助类,但是为了学习Callback的工作原理,我们将会自己实现一个.为了激活基本的"拖放"和"滑动删除",我们必须覆盖的主要方法是:我们也要使用这两个方法:我们一个一个地看一下:ItemTouchHelper允许你轻易地决定事件的方向.你必须实现getMovementFlags(RecyclerView,RecyclerView.ViewHolder)方法来指明"拖"和"滑动"所支持的方向,并且使用ItemTouchHelper.makeMovementFlags(int,int)来构建返回标签.在此我们在两个不同的方向激活"拖"和"滑动".ItemTouchHelper能够用来实现"没有滑动的拖动"或者"没有拖动的滑动",所以你必须精确地指明想要支持的动作.如果你想要在RecyclerView的item上支持"长按启动拖放"事件,你就必须实现isLongPressDragEnabled()返回true.此外,ItemTouchHelper.startDrag(RecyclerView.ViewHolder)可以从"操作"中启动"拖放",这一点会在之后详述.要想要view内部的任意触摸事件都可以启动"滑动"动作,就简单地在isItemViewSwipeEnabled()返回true.此外,ItemTouchHelper.startSwipe(RecyclerView.ViewHolder)能够手动地启动"滑动"事件.然后,onMove()和onSwiped()方法需要实现,来通知负责更新基础数据的东西.所以,首先,我们要创建一个接口,以允许我们传递"拖放"和"滑动删除"事件的回调.从当前示例来讲,要实现这些的最简单的方式,是将我们的RecyclerView.Adapter实现这个接口:调用notifyItemRemoved(int)和notifyItemMoved(int,int)是非常重要的,由此,Adapter会更新数据.请注意,这也很重要,我们改变item的position是在每一次view被切换到新的index,而不是在"放"事件之后.现在我们回来构建SimpleItemTouchHelperCallback,因为我们依然必须覆盖onMove()和onSwiped()方法.首先,为Adapter添加构建器和变量:然后覆盖剩下的事件并通知Adapter:这个Callback应该看起来像这样:当Callback准备好之后,我们创建ItemTouchHelper并调用attachToRecyclerView(RecyclerView)方法:当你运行的时候,结果应该看起来
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 延安大学《英语测试与评价》2022-2023学年第一学期期末试卷
- 铁路信号设备招标合同三篇
- 烟台大学《数据结构课程设计》2021-2022学年第一学期期末试卷
- 三年级数学(上)计算题专项练习附答案集锦
- 四年级数学(四则混合运算带括号)计算题专项练习与答案汇编
- 五年级数学(小数四则混合运算)计算题专项练习及答案
- 徐州工程学院《美术(Ⅱ):美术创作》2021-2022学年第一学期期末试卷
- 学期教学课程工作计划
- 主管职能与责任的全面分析计划
- 公关活动策划与实施方案计划
- 全国中小学生转学联系表(样表)
- MJS工法垂直施工操作规程
- 医院总务科洗衣房各岗位绩效考核指标
- 方格纸(网格草稿纸)0.5cm(共2页)
- 艾滋病预防知识ppt课件
- 三层地下室深基坑专项施工方案
- 个人所得税专项附加扣除培训PPT课件
- 石材考察报告范文3篇
- NICU护理交班PDCA
- 小学四年级家长会英语老师PPT课件
- 中国传统纹样解析PPT课件
评论
0/150
提交评论