


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小区设备供应管理办法
- 肠梗阻说课课件
- 丰县教招数学试卷
- 二上西师数学试卷
- 建筑领域培训课件
- 高二怀化市统考数学试卷
- 肝中医讲解课件
- 福建小学毕业班数学试卷
- 肉瘿的护理课件
- 肝病的诊断和治疗技术进展
- 中学食堂内控制度
- 教师职业理想信念教育
- T∕CITS 146-2024 尿液有形成分名称与结果报告规范化指南
- 农药经营考试题及答案
- 2025年中考安徽物理试题及答案
- 标前合作合同范本
- 2025年初级钢筋工(五级)技能认定理论考试指导题库(含答案)
- 国家开放大学汉语言文学本科《古代诗歌散文专题》期末纸质考试第四大题论述题库2025春期版
- 2024秋新科粤版化学九年级上册教学课件 2.2 构成物质的微观粒子 第4课时 相对原子质量 离子的形成
- 魅力沟通技巧课件
- 宠物店合伙协议书范本
评论
0/150
提交评论