首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

RecyclerView 梳理:点击&长按事件、分割线、拖曳排序、滑动删除

从这篇文章主要梳理以下几点: 优雅的实现:item 点击事件 & item 长点击事件 RecyclerView 添加 divider 的标准姿势 RecyclerView 实现 item 的拖曳排序和滑动删除.../html/227/201705/2650239745/1.html RecyclerView 实现 item 的拖曳排序和滑动删除 下面就主要为大家梳理一下拖曳排序和滑动删除的实现,具体实现效果看文章首部效果图...(ItemTouchHelper 的使用并不仅仅局限于 RecyclerView 的滑动删除,你同意可以用在其他需要拖曳滑动的地方。...() 用于设置是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向,有以下两种情况: 如果是列表类型的 RecyclerView,拖拽只有 UP、DOWN 两个方向 如果是网格类型的则有 UP、DOWN...滑动删除 如何实现滑动删除呢?我们只需要实现第三个方法 onSwipe() 就行了。

3.3K30

Android:RecyclerView滑动到边缘时的光晕效果

相信大家对于RecyclerView 都已经不再陌生,我们都知道RecyclerView等可滑动控件默认的是会有滚动条以及滑动到边缘时的阴影(光晕)效果的,那么怎样去掉这两个默认属性呢,在这里简单的记录一下...通过java代码设置 RecyclerView.setHorizontalScrollBarEnabled(boolean horizontalScrollBarEnabled); RecyclerView.setVerticalScrollBarEnabled...(boolean verticalScrollBarEnabled); 设置为true时有相应的滚动条,为false时无相应的滚动条 滚动到边缘的光晕效果 1、通过xml文件设置...,那么滑到边界后继续滑动会出现弧形光晕;如果recycleview里面的内容不可以滑动,那么滑到边界后继续滑动不会出现弧形光晕 2、通过java代码设置 a.RecyclerView.setOverScrollMode...同时去掉滚动条和默认的光晕效果的完整xml代码为: RecyclerView android:overScrollMode="never"

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    基于滑动场景解析RecyclerView的回收复用机制原理

    日志.png 红框1是 RecyclerView 向下滑动操作的日志,第三行5个卡位的显示都是重新创建的 ViewHolder ;红框2是再次向上滑动时的日志,第一行5个卡位的重新显示用的 ViewHolder...明明5个卡位都是复用的。 在上面的操作基础上,我们继续往下操作: ?...先向下再向下.png 在第二个问题操作的基础上,目前已经创建了15个 ViewHolder,此时显示的是第1、2行的卡位,那么继续向下滑动两次,这个过程的日志如下: ?...日志.png 红框1是第二个问题操作的日志,在这里截出来只是为了显示接下去的日志是在上面的基础上继续操作的; 红框2就是第一次向下滑时的日志,对比问题2的日志,这次第三行的5个卡位用的 ViewHolder...一次遥控器按键的操作,不管有没有发生滑动,都会导致 RecyclerView 的重新 onLayout,那要 layout 的话,RecyclerView 会先把所有 children 先 remove

    3K60

    Android--利用ItemTouchHelper实现RecyclerView的侧滑删除

    上次分析源码,我们知道,ItemTouchHelper对被选中的ViewHodler进行动画操作都是通过ItemTouchUIUtilImpl这个类,我们想要实现侧滑删除,必定需要对ViewHodler...进行平移操作,ItemTouchHelper.Callback通过onChildDraw方法调用了ItemTouchUIUtilImpl中的方法,所以我们改写onChildDraw方法 @Override...{ MyAdapter.MyViewHolder myViewHolder = (MyAdapter.MyViewHolder) viewHolder; //最大偏移不超过删除布局宽度...item.png 其中删除和取消的布局在下层,好了,我们来看下效果 ?...recyclerview.gif 我们还需要解决的问题是上下滑动或者选中其他ViewHodler时的时候,把ViewHodler复原 在select方法中,记录上一个ViewHodler /**

    3.7K40

    【Android 事件分发】ItemTouchHelper 实现侧滑删除

    4、滑动速度判定设置 5、设置动画时间 6、设置侧滑删除触发操作 7、RecyclerView.Adapter 适配器中的删除操作 三、完整代码实现 1、主界面 2、ItemTouchHelper.Callback...{ /** * 是否启用滑动操作 * @return 是否启用 true 启用, false 不启用 */ @Override public boolean...因此在该案例中 , 滑动幅度在水平方向上超过 0.5 倍的条目组件宽度 , 侧滑删除才能生效 ; 下面的操作中 , 滑动在水平方向上没有超过组件宽度的 0.5 倍 , 滑动删除不生效 ; 下面的操作中..."触发侧滑删除条目"); // 滑动指定的距离, 达到一定幅度后, 就会触发该方法回调 // 这里做的是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目...适配器中的删除操作 删除数据列表中的元素 , 并调用 notifyItemRemoved 触发删除动画 ; public class Adapter extends RecyclerView.Adapter

    66120

    【Android 事件分发】ItemTouchHelper 实现拖动排序

    | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...getMoveThreshold 方法 , 设置用户的拖动距离 , 组件在宽度 / 高度 上移动超过该比例 , 就认为拖动触发, 执行拖动相关操作 ; 设置的是比例值, 返回值为 0.9 , 就意味着滑动宽度...(), target.getAdapterPosition()); return true; } } 5、RecyclerView.Adapter 适配器中的交换排序操作 删除数据列表中的元素...*/ /** * 是否启用滑动操作 * @return 是否启用 true 启用, false 不启用 */ @Override public...// 这里做的是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition

    2.3K10

    ItemTouchHelper 实现交互动画

    当View被滑动删除的时候 onSelectedChanged 当item被拖拽或侧滑时触发 03.简单实现思路 几个方法中代码思路 要想达到上面功能需求,在...getMovementFlags方法中,当用户拖拽或者滑动Item的时候需要我们告诉系统滑动或者拖拽的方向,那我们知道支持拖拽和滑动删除的无非就是LinearLayoutManager和GridLayoutManager...在onMove方法中处理拖拽的回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item的位置的时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除后的逻辑。...; } } public interface OnItemTouchCallbackListener { /** * 当某个Item被滑动删除的时候...横向滑动到底后不滑动ViewPager 05.RecyclerView嵌套RecyclerView的滑动冲突问题 06.RecyclerView使用Glide加载图片导致图片错乱问题解决 24.ScrollView

    3.9K20

    Splay Tree的删除操作

    Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就能够使用来解题了。 指针的删除操作的处理还是那么难的,非常多坎须要避开....同一个坎还是坑了我好多次,就是指针传递的问题,什么时候须要改动指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实參。...这里的删除操作就是须要改变传递到函数的指针本身的,所以我这里使用了返回指针操作。 还有删除树的问题,之前的代码没做删除操作,所以没问题,如今须要逐个节点删除,所以要小心不能把整个树都删除了。...至此, splay 树的功能差点儿相同完好了。 代码中凝视标明了几个坑都被我碰到了。...,不能这么删除,要逐个节点删除 if (left) delete left, left = NULL; if (right) delete right, right = NULL; }*

    37310

    Android-Recyclerview常用总结

    image.png 3.RecyclerView之实现滑动删除拖拽排序(首个可以固定) 3.1实现RecyclerView的滑动删除拖拽排序 滑动删除和拖拽必须用到ItemTouchHelper ,我们看它如何使用...image.png onMove()方法中的操作,注释都很明了,看不懂转行吧 ?...image.png 这样我们就实现了滑动删除和拖拽移动功能,但别高兴太早,这代码仍然存在问题,你正常来讲网格布局应该不具备滑动删除才对,这怎么解决呢?...通过有参构造来设置一个变量,在重写一个isItemViewSwipeEnabled()返回该boolean类型的值控制是否具备滑动删除即可。如图: ? image.png ?...image.png 这样就是实现线性布局管理器和网格布局管理器区分对待,即:线性布局管理器拥有滑动删除和拖拽而网格布局管理器只拥有拖拽功能。

    1.4K30

    RecyclerView必知必会

    容易实现添加item、删除item的动画效果。 容易实现拖拽、侧滑删除等功能。 RecyclerView是一个插件式的实现,对各个功能进行解耦,从而扩展性比较好。...QuickAdapter的实现如下: 其中: getLayoutId(int viewType)是根据viewType返回布局ID。 convert()做具体的bind操作。...,因为我们完全可以把点击事件的实现写在Adapter的onBindViewHolder()中,不暴露出来。...那么如何在不破坏原有Adapter实现的情况下完成呢? 这里引入装饰器(Decorator)设计模式,该设计模式通过组合的方式,在不破话原有类代码的情况下,对原有类的功能进行扩展。...具体实现如下: 拖拽、侧滑删除 Android提供了ItemTouchHelper类,使得RecyclerView能够轻易地实现滑动和拖拽,此处我们要实现上下拖拽和侧滑删除。

    4.7K20

    Android笔记: 使用RecyclerView打造可拖拽的GridView

    以下是RecyclerView结合ItemTouchHelper实现的列表和网格布局的拖拽效果。...主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...用于设置是否处理拖拽事件和滑动事件,以及拖拽和滑动操作的方向,比如如果是列表类型的RecyclerView,拖拽只有UP、DOWN两个方向,而如果是网格类型的则有UP、DOWN、LEFT、RIGHT四个方向...,我们把swipeFlags 都设置为0,表示不处理滑动操作。...,我们在滑动item的时候就会回调onSwiped的方法,我们不处理这个事件,空着就行了。

    1.8K31

    【Android 事件分发】ItemTouchHelper 源码分析 ( OnItemTouchListener 事件监听器源码分析 )

    | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...动作不拦截 , 取消操作很少遇到 , 因此 , 拦截机制中 , 只负责拦截手指按下 和 抬起 操作 , 在 ItemTouchHelper 的业务逻辑中 , 不需要处理移动事件 ; 2、处理按下事件 当检测到...CANCEL 三种动作 , MOVE 动作不拦截 // 取消操作很少遇到 // 因此 , 拦截机制中 , 只负责拦截手指按下 和 抬起 操作...= ACTIVE_POINTER_ID_NONE) { // 该分支表示滑动操作完成的分支 // ACTIVE_POINTER_ID_NONE 表示是否完成了滑动...= ACTIVE_POINTER_ID_NONE) { // 该分支表示滑动操作完成的分支 // ACTIVE_POINTER_ID_NONE 表示是否完成了滑动

    1.8K20

    【Android 事件分发】ItemTouchHelper 简介 ( 拖动滑动事件 | ItemTouchHelper.Callback 回调 )

    | ItemTouchHelper.Callback 回调 ) 【Android 事件分发】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定...| 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper 实现拖动排序 ( 设置滑动方向 | 启启用长按拖动功能 | 拖动距离判定 | 设置拖动触发操作..., 主要针对 RecyclerView 的上下左右拖动事件 进行处理 ; 如 : 侧滑删除 功能 , 条目位置拖动交换 功能 , 就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView...方法 , 传入想要添加上下左右拖动事件的 RecyclerView 对象 , 即可为该 RecyclerView 添加拖动事件 ; 添加后 , 该 RecyclerView 自动可以进行上下左右拖动操作..., 动作有两种 , 一种是滑动 , 如左右侧滑 ; 一种是拖动 , 长按后激活拖动操作 , 可用于拖动交换位置操作 ; 拖动 / 滑动 标志位可以使用 ItemTouchHelper.UP | ItemTouchHelper.DOWN

    1.8K10
    领券