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

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

上次分析源码,我们知道,ItemTouchHelper对被选中的ViewHodler进行动画操作都是通过ItemTouchUIUtilImpl这个类,我们想要实现侧滑删除,必定需要对ViewHodler...进行平移操作,ItemTouchHelper.Callback通过onChildDraw方法调用了ItemTouchUIUtilImpl中的方法,所以我们改写onChildDraw方法 @Override...=0&&dY ==0,所以其他的情况调用ItemTouchUIUtilImpl的方法 super.onChildDraw(c, recyclerView, viewHolder,...recyclerview.gif 但是,我们的item并不能获取点击事件,因为ItemTouchHelper并没有把事件传递给子控件,解决方法:把ItemTouchHelper复制到自己的项目中!...recyclerview.gif 我们还需要解决的问题是上下滑动或者选中其他ViewHodler时的时候,把ViewHodler复原 在select方法中,记录上一个ViewHodler /**

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

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

    以下是RecyclerView结合ItemTouchHelper实现的列表和网格布局的拖拽效果。...主要就要使用到ItemTouchHelper ,ItemTouchHelper 是support-v7包中加入的一个帮助开发人员处理拖拽和滑动的实现类,它能够让你非常容易实现侧滑删除、拖拽的功能。...我们只需要实例化一个ItemTouchHelper,然后关联到RecyclerView就OK了: itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback...()); itemTouchHelper.attachToRecyclerView(recyclerView); 构造方法中需要一个ItemTouchHelper.Callback,ItemTouchHelper...但是,我们都知道RecyclerView并没有提供OnItemLongClickListener,这个问题我在上一篇博客中已经完美地解决了,就是使用OnItemTouchListener,然后识别触摸手势

    1.8K31

    怎么简单实现菜单拖拽排序的功能

    1、效果2、简介本文主角是ItemTouchHelper。它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及滑动处理。...接下来就是把这个辅助类绑定到RecyclerView。RecyclerView显示的实现就是基础的样式,就不展开了,可以查看源码。...但是我在实现效果的时候遇到一个问题,因为我加了布局切换的功能,在每次切换的时候,针对不同的布局分别设置layoutManager和ItemDecoration,这就导致随着切换次数的增加,item的间隔就越大...ItemTouchHelper,然后调用其attachToRecyclerView方法绑定到RecyclerView。...;同时,注意这里判断的主体是mRecyclerView,不是我们传进来的recyclerView,而且我们传进来的recyclerView是支持Nullable的,所以我们可以传个空值走到destroyCallbacks

    1.1K30

    【RecyclerView】 十五、使用 ItemTouchHelper 实现 RecyclerView 拖动排序 ( ItemTouchHelper 简介 )

    和 拖动效果 ; ItemTouchHelper 需要与 RecyclerView 和 ItemTouchHelper.Callback 结合起来使用 ; 根据想要开发的功能 , 重写不同的方法 ;...如果是想要开发拖动效果相关的功能 , 重写 ItemTouchHelper.Callback 的 onMoved 方法 ; public abstract boolean onMove(...target); 如果想要开发滑动相关效果 , 重写 ItemTouchHelper.Callback 的 onSwiped 方法 ; public abstract void onSwiped(@NonNull...抽象类 , 或 实现 ItemTouchHelper.Callback 接口 , 这两个操作 自定义 LayoutManager 布局管理器 , 可以达到最优化的效果 ; 看一下 Android 官方定义的...{ } 默认情况下 , ItemTouchHelper 移动 item 组件的 translateX 或 translateY 属性 , 为其重新设置位置 ; 开发者可以自定义这些行为通过覆盖 ItemTouchHelper.Callback

    97000

    怎么简单实现菜单拖拽排序的功能

    1、效果 2、简介 本文主角是ItemTouchHelper。 它是RecyclerView对于item交互处理的一个「辅助类」,主要用于拖拽以及滑动处理。...接下来就是把这个辅助类绑定到RecyclerView。 RecyclerView显示的实现就是基础的样式,就不展开了,可以查看源码。...但是我在实现效果的时候遇到一个问题,因为我加了布局切换的功能,在每次切换的时候,针对不同的布局分别设置layoutManager和ItemDecoration,这就导致随着切换次数的增加,item的间隔就越大...ItemTouchHelper,然后调用其attachToRecyclerView方法绑定到RecyclerView。...;同时,注意这里判断的主体是mRecyclerView,不是我们传进来的recyclerView,而且我们传进来的recyclerView是支持Nullable的,所以我们可以传个空值走到destroyCallbacks

    1.3K40

    【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    中实现 , 要研究其中的事件分发原理 , 主要分析 ItemTouchHelper 中的源码即可 ; 二、ItemTouchHelper 绑定 RecyclerView 源码分析 ---- 1、ItemTouchHelper.attachToRecyclerView...mRecyclerView 成员为绑定的 RecyclerView 列表 , 并调用 setupCallbacks 方法 , 为 ItemTouchHelper 设置回调 ; 在 setupCallbacks...mRecyclerView 成员为绑定的 RecyclerView 列表 mRecyclerView = recyclerView; if (recyclerView !...条目中的装饰 , 可以在条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration...方法分析 在 ItemTouchHelper.setupCallbacks 方法中 , 调用了 mRecyclerView.addItemDecoration(this); 方法 , 为当前的 RecyclerView

    40020

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

    ItemTouchHandler 是 Google 提供的一个工具类 , 主要针对 RecyclerView 的上下左右拖动事件 进行处理 ; 如 : 侧滑删除 功能 , 条目位置拖动交换 功能 ,...; 调用 ItemTouchHandler 的 attachToRecyclerView 方法 , 传入想要添加上下左右拖动事件的 RecyclerView 对象 , 即可为该 RecyclerView...添加拖动事件 ; 添加后 , 该 RecyclerView 自动可以进行上下左右拖动操作 , 用户可以自行添加相关的回调 ItemTouchHelper.Callback , 响应这些事件 ; 初始化...自定义实现 ---- 其中的 ItemTouchHelper.Callback 一般都需要开发者自定义子类实现 ; 1、设置移动标志 ( 拖动/滑动 ) 重写 ItemTouchHelper.Callback..., 长按后激活拖动操作 , 可用于拖动交换位置操作 ; 拖动 / 滑动 标志位可以使用 ItemTouchHelper.UP | ItemTouchHelper.DOWN , 或运算得到想要的标志位

    1.8K10

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

    ,但是不够优雅,有时还可能带来一些想不到的问题。...(ItemTouchHelper 的使用并不仅仅局限于 RecyclerView 的滑动删除,你同意可以用在其他需要拖曳滑动的地方。...当然,今天我们不涉及其他地方的使用) 实现的代码并关联到 RecyclerView 非常简单,代码如下: ItemTouchHelper itemTouchHelper = new ItemTouchHelper...需要我们关注的是创建 ItemTouchHelper 时传入的参数 ItemTouchHelper.Callback() 。...但是虽然拖曳是没什么问题了,但是并不能达到下图的效果,因为你正在拖曳的 item 并没有阴影效果。 ? 那怎么才能实现被拖曳的 item 有背景颜色加深起到强调的视觉效果呢?

    3.2K30

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

    ) 2、启用长按拖动功能 3、拖动距离判定设置 4、设置拖动排序触发操作 5、RecyclerView.Adapter 适配器中的交换排序操作 三、完整代码实现 1、主界面 2、ItemTouchHelper.Callback...的 getMovementFlags 方法 , 在该方法中设置滑动/拖动标志位 ; 滑动 / 拖动 标志 , 可使用 ItemTouchHelper.UP , ItemTouchHelper.DOWN...ItemTouchHelper.Callback { /** * 设置上下左右动作 * 只有在此处打开了指定方向的设置 , 才可以应用具体方向的拖动 * @param...条目组件 高度的 0.9 倍 , 拖动排序功能没有触发 ; 下面的操作中 , 拖动的幅度超过了 条目组件 高度的 0.9 倍 , 拖动排序功能 触发 ; 4、设置拖动排序触发操作 重写 ItemTouchHelper.Callback..., 是拖动后的的位置条目 ; 可以通过调用 RecyclerView.ViewHolder 的 getAdapterPosition 方法 , 可以获取该条目的索引值 ; public class

    2.3K10

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

    拖动距离判定 | 设置拖动触发操作 ) 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView ) 【Android 事件分发】ItemTouchHelper...) 方法 , 将 ItemTouchHelper 与 RecyclerView 进行关联 , 并在 attachToRecyclerView 方法的最后 , 调用了 setupCallbacks 方法...条目中的装饰 , 可以在条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration...mOnItemTouchListener , 这是 RecyclerView 的 ItemTouchHelper 的核心 ; OnItemTouchListener 是 RecyclerView 中定义的作用与条目组件的触摸监听器...涉及到的本博客相关源码 ---- public class ItemTouchHelper extends RecyclerView.ItemDecoration implements

    1.8K20

    Android-Recyclerview常用总结

    概述 在android开发中我们不可避免的会用到Recyclerview,用以替代之前的ListView,GridView,Gallery等.它是support:recyclerview-v7中提供的控件...image.png 3.RecyclerView之实现滑动删除拖拽排序(首个可以固定) 3.1实现RecyclerView的滑动删除拖拽排序 滑动删除和拖拽必须用到ItemTouchHelper ,我们看它如何使用...: ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback()); itemTouchHelper.attachToRecyclerView...(mRecyclerView); 其创建的对象过程中要传一个ItemTouchHelper.CallBack(),它是ItemTouchHelper在拖拽中需要回调的方法,我们只需要在其对应返回的回调方法中处理自己的逻辑就好了...image.png 这样我们就实现了滑动删除和拖拽移动功能,但别高兴太早,这代码仍然存在问题,你正常来讲网格布局应该不具备滑动删除才对,这怎么解决呢?

    1.4K30

    AndroidApp和车机开发:RecyclerView实现触摸和拖放的功能

    引言 在现代应用程序中,用户交互性是提供丰富用户体验的关键因素。RecyclerView作为Android中处理列表和网格布局的强大组件,支持多种交互,包括拖放排序。...本文指导您如何在RecyclerView中实现拖放功能,使用户能够通过长按和拖动来重新排序列表项,用Kotlin实现 长按和拖放操作 为了为RecyclerView添加长按拖放功能,我们将通过自定义ItemTouchHelper.Callback...函数 在适配器中实现 moveItem 函数,用于交换数据集中的元素位置,通知 RecyclerView 更新: 比较源位置和目标位置。...使用Collections.swap交换元素在列表中的位置。 调用notifyItemMoved通知RecyclerView元素已移动。...结语 通过上述步骤,可以轻松地在Android应用中的RecyclerView实现拖放排序功能。 谢谢大家的阅读,如果您觉得这篇文章对您有所帮助,请给我点赞和支持,非常感谢: )

    28620
    领券