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

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

方法 第 2 参数 , 是拖动条目索引 ; 第 3 参数 , 是拖动位置条目 ; 可以通过调用 RecyclerView.ViewHolder getAdapterPosition...target) { // 拖动交换数据, 该方法中交换 Adapter 中数据, 并刷新界面 Log.i(TAG, "触发拖动交换条目"); mAdapter.changeItem...适配器中交换排序操作 删除数据列表中元素 , 并调用 notifyItemRemoved 触发删除动画 ; public class Adapter extends RecyclerView.Adapter...viewHolder, int direction) { Log.i(TAG, "触发侧滑删除条目"); // 滑动指定距离, 达到一定幅度, 就会触发该方法回调...// 这里做是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition

2.1K10

RecyclerView技术栈参考资料:

所以只需要在app/build.gradle中添加以下依赖,便能立即使用: dependencies { compile 'com.android.support:recyclerview-v7...滚出可见区域条目将被回收,并在下一个条目可见时候被复用。 我们可以从下图中得到更直观解释: ? 左边图是数据初始化示例,当向上滚动视图时候,当条目不可见之后将被回收。...LayoutManager - 负责摆放视图等相关操作 ItemDecoration - 负责绘制Item附近分割线 ItemAnimator - 为Item一般操作添加动画效果,,增删条目等...) 移除指定位置Item public final void notifyItemChanged(int position) 更新指定位置Item Listeners 很遗憾,RecyclerView并没有像...至此,所有与本文章相关代码都可以从Github上获取到,另外这个仓库中还有一份本人精心制作PPT,可供参考。

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

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

mRecyclerView.addItemDecoration(this); // 添加了每个条目触摸监听器 mOnItemTouchListener // 该监听器是定义在..., 该子组件是 RecyclerView一个条目 , 用户按下 RecyclerView某个条目 , findAnimation 方法用于找到按下条目 View , 并设置给 RecoverAnimation...中一个条目 ; // 找到手指按下所在位置条目的 View 组件 // 查找手指按下 View 子组件 , 该子组件时 RecyclerView一个条目...X, Y 坐标 , 查找对应条目组件 , 先获取触摸 XY 坐标 ; final float x = event.getX(); final float y = event.getY...RecyclerView一个条目 // 用户按下 RecyclerView某个条目 // findAnimation 方法用于找到按下条目

1.7K20

AndroidRecyclerView实现Item添加删除代码示例

本文介绍了AndroidRecyclerView实现Item添加删除代码示例,分享给大家,具体如下: 先上效果图: ?...为增加和删除项目提供默认动画效果,也可以自定义。 RecyclerView项目结构如下: ?...Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter适配器,作用是将数据与每一个条目的界面进行绑定。...RecyclerView-Item添加: 在适配器中加入如下代码: // 添加数据 public void addData(int position) { // 在list中添加数据,并通知条目加入一条...();代码,因为我们在删除条目时不一定是按照顺序删除,也许是错位删除,这样会因为position原因造成角标越界异常,所以需要整体刷新一下。

3.3K30

RecyclerView】 六、RecyclerView.ItemDecoration 条目装饰 ( 简介 | onDraw | onDrawOver | getItemOffsets )

item 条目布局组件边距 , 效果类似于 padding 或 margin ; 默认值四个边距都是 0 ; 针对特殊位置特殊设置 : 如果需要取访问 Adapter 适配器中关联数据 , 调用...RecyclerView.getChildAdapterPosition(View) , 方法获取适配器中该 View 组件位置 ; 然后将特殊位置可以设置不同参数 , 即可实现 " 针对特殊位置特殊设置...(View) * 方法获取适配器中该 View 组件位置 ; * * @param outRect 接受输出矩形...允许应用在适配器中 item 条目组件之外, 添加特殊绘图和布局...(View) * 方法获取适配器中该 View 组件位置 ; * * @param outRect 接受输出矩形

51100

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

; 其中 mSelected 是在第一次按下时进行赋值 , 有了 mSelected 值 , 开始处理滑动事件 ; 如果没有获取到 mSelected , 则直接返回 ; if...target) 先获取拖动起始位置和目标位置 , 然后传入 onMove 方法 , 触发回调 ; // 获取被拖动目标位置 final int toPosition = target.getAdapterPosition...(); // 获取被拖动起始位置 final int fromPosition = viewHolder.getAdapterPosition(); // 拖动判定成功...RecyclerView一个条目 // 用户按下 RecyclerView某个条目 // findAnimation 方法用于找到按下条目...final int toPosition = target.getAdapterPosition(); // 获取被拖动起始位置 final int

1.1K20

2-VII-RecyclerView事件

[1].本文接上文:RecyclerView基本使用 [2].RecyclerView把很多事都交给了我们,就连item点击事件都没有 [3].在adapter中加载布局时候,可以为item...添加事件 [4].没有点击效果,还要自己添加点击选择器 [5].RecyclerView增删条目以及条目运动效果 ---- 一、点击事件 方式1.修改:FirstRvAdapter#onCreateViewHolder...rv点击1.gif ---- 二、背景选择器 添加点击效果:可以自定义选择器 为item背景添加:安卓自带波纹样式选择器 //有边界 android:background="?..."/> ---- 三、添加删除:效果是单机添加,长按删除 1.FirstRvAdapter中照样子添加长按监听: /////////////////////条目长按监听...: /** * 添加item * * @param i 位置 * @param str 值 */ public void addData

60440

RecyclerView】 十三、RecyclerView 数据更新 ( 移动数据 | 数据改变 )

(int fromPosition, int toPosition) 方法 , 传入参数是移动前位置和移动位置 ; 该方法作用是通知任何被注册观察者 , fromPosition 位置 item...元素移动到了 toPosition 位置 ; 参数说明 : int fromPosition 参数 : 元素移动前位置 ; int toPosition 参数 : 元素移动位置 ; 注意 :...toPosition 元素移动位置 ; */ public final void notifyItemMoved(int fromPosition, int...和 结构性改变 ; ① item 元素改变 : 指的是单个 item 数据更新 , 但是位置没有改变 ; ② 结构性改变 : 指的是有新数据被插入 , 删除 , 移动 , 位置发生了改变 ; 参数说明...item 数据更新 , 但是位置没有改变 ; * 结构性改变指的是有新数据被插入 , 删除 , 移动 , 位置发生了改变 ; * * 该事件不指定数据集发生了哪些变化

3.2K00

Android新组件RecyclerView介绍,其效率更好

1、什么是RecyclerView RecyclerViewandroid-support-v7-21 版本中新增一个 Widgets,官方对于它介绍则是:RecyclerView 是 ListView...第三点:ItemAnimator ItemAnimator简单来说是会根据适配器上收到相关通知去动画显示组件修改,添加删除等。它会自动添加和移除item动画。...所以目前在适配器中处理这样事件比较好。如果想要从适配器上添加或移除条目,需要明确通知适配器。这与先前notifyDataSetChanged()方法稍微有些不同。...LayoutManager:将每个条目的视图放置于适当位置。 ItemDecoration:在每个条目的视图周围或上面绘制一些装饰视图。...ItemAnimator:在条目添加、移除或者重排序时添加动画效果。

1.3K90

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

, 主要针对 RecyclerView 上下左右拖动事件 进行处理 ; : 侧滑删除 功能 , 条目位置拖动交换 功能 , 就可以使用 ItemTouchHandler 实现 ; 如果 RecyclerView...没有添加 ItemTouchHandler , 只能上下滚动 , 左右拉动 , 没有效果 , 也无法进行拖动交换条目操作 ; 调用 ItemTouchHandler attachToRecyclerView...方法 , 传入想要添加上下左右拖动事件 RecyclerView 对象 , 即可为该 RecyclerView 添加拖动事件 ; 添加 , 该 RecyclerView 自动可以进行上下左右拖动操作..., 用户可以自行添加相关回调 ItemTouchHelper.Callback , 响应这些事件 ; 初始化 RecyclerView 并设置 ItemTouchHelper 示例 :...方法 ; 该方法用于设置上下左右动作 , 只有在此处打开了指定方向设置 , 才可以应用具体方向拖动 , 动作有两种 , 一种是滑动 , 如左右侧滑 ; 一种是拖动 , 长按激活拖动操作 , 可用于拖动交换位置操作

1.6K10

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

因此在该案例中 , 滑动幅度在水平方向上超过 0.5 倍条目组件宽度 , 侧滑删除才能生效 ; 下面的操作中 , 滑动在水平方向上没有超过组件宽度 0.5 倍 , 滑动删除不生效 ; 下面的操作中..., 水平方向上每秒超过 5 像素速度 , 触发侧滑删除 ; 5、设置动画时间 重写 ItemTouchHelper.Callback getAnimationDuration 方法 , 设置用户手指离开动画持续时间..."触发侧滑删除条目"); // 滑动指定距离, 达到一定幅度, 就会触发该方法回调 // 这里做是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目...viewHolder, int direction) { Log.i(TAG, "触发侧滑删除条目"); // 滑动指定距离, 达到一定幅度, 就会触发该方法回调...// 这里做是滑动删除功能, 直接删除滑动项 // 该方法中删除指定条目, 并刷新界面 mAdapter.deleteItem(viewHolder.getAdapterPosition

54920

RecyclerView零点突破(动画+边线篇)

animator.png ---- 1.1.添加时候: 默认效果是下面的条目整体下移,之后插入条目淡入(透明度0~1) ?...animateMove最大条目position是:11,也就是当前页面的最大Position 经多次测试: 插入位置之后所有当前页条目都会响应animateMove方法,且执行先后顺序是随机...//添加条目布局列表:mPendingAdditions if (mPendingAdditions.remove(item)) {//移除该条目 view.setAlpha...1.2.1:定点旋转 既然分析到它是怎么动起来,当然可以改一下,比如: 注意:animateAddImpl里动画是在移动结束调用 ?...,一个库不可能涵盖所以需求,而且很多用不到特效还占空间 微妙修整还是要懂才行,能应对变化只有变化本身,记住修改效果地方: 更新数据:animateChangeImpl() 添加数据

96020

RecyclerView使用详解(代替ListView)

Recycler是android5.0版本中新添加一个view; 使用之前必须添加依赖库: dependencies { compile 'com.android.support:recyclerview-v7...StaggeredGridLayoutManager:流式布局 我们今天只使用第一种,先了解最实用,最基础,后期会更新 RecyclerView默认是没有分割线,网上很多demo为了给RecyclerView...adpater其实只需要实现三个方法,但是我这个adapter中却多出来几个方法,RecyclerView本身是没有条目点击事件,所以多出来几个方法是变相RecyclerView设置设置条目点击事件...: 直接给RecyclerView添加活动监听和添加脚布局实现,首先得到当前页面显示条目个数,adapter一共多少个条目,和当前布局遮挡页面个数 先求出用页面实现个数+被页面遮挡条目个数和,然后拿这个和和...adapter总条目个数做比较,当等于或者大于adapter条目个数时候直接加载数据: //添加滑动监听 myRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener

1.3K20

【Jetpack】DataBinding 架构组件 ⑥ ( RecyclerView 数据绑定 )

'androidx.recyclerview:recyclerview:1.2.1' } 2、RecyclerView 条目 DataBinding 布局 要绑定数据是 RecyclerView 条目的数据..., 因此需要 将条目布局设置为 DataBinding 布局 ; 创建 item.xml 布局 , 将光标放置在第一个字符位置 , 按下 Alt + 回车 , 弹出如下下拉菜单 , 选择 " Convert...to data binding layout " 选项 , 可以将正常 约束布局 布局文件 , 转为 DataBinding 布局文件 ; 转换完毕 , 该 item.xml 布局 会 生成对应...类中重写 onCreateViewHolder 函数中 , 获取 DataBinding 布局 , 并将其设置给 自定义 RecyclerView.ViewHolder 对象 ; 获取 DataBinding...类中重写 onBindViewHolder 函数中 , 为每个列表条目设置数据 ; 先通过参数中 MyViewHolder 对象获取其中 ItemBinding 数据绑定布局对象 ; 之后为 holder.itemBinding

62920

在 View 上使用挂起函数 | 实战

这并不是我们预期效果,引发该问题原因有如下几点: 我们在点击事件监听器中使用 ID 是直接通过 Episode 类来获取。...这个 ID 映射到了季份列表中某一集; 该集条目可能还没有被添加到 RecyclerView 中,需要用户展开该季份列表,然后将其滑动展示到屏幕上,这样我们需要视图才能被 RecyclerView...难以维护/更新 两个月以后,动画设计师要求在其中增加一个淡入淡出过渡动画。您可能需要跟踪这部分过渡动画,查看每一个回调才能找到确切位置触发新动画,之后您还要进行测试......]添加到了数据集中,并返回该条目在适配器中位置 */ suspend fun RecyclerView.Adapter.awaitItemIdExists...注释中所说,由于 SmoothScroller 真正开始执行时间是动画下一帧,所以我们等待一帧再判断滑动状态。

1.4K30

ItemTouchHelper 实现交互动画

01.拖拽需要实现功能 需要实现拖拽功能如下所示 长按item拖动,与其他item交换位置 按住item右面的图标拖动,与其他item交换位置 左滑item变透明并缩小,超出屏幕后,其他item补上...在onMove方法中处理拖拽回调逻辑,那么什么时候被调用?当Item被拖拽排序移动到另一个Item位置时候被调用。在onSwiped方法当Item被滑动删除到不见中处理被删除逻辑。...// 更新UI中Item位置,主要是给用户看到交互效果 mAdapter.notifyItemMoved(srcPosition, targetPosition);...11.RecyclerView上拉加载 添加recyclerView滑动事件,上拉加载分页数据,设置上拉加载底部footer布局,显示和隐藏footer布局 12.RecyclerView缓存原理...控件滑动到顶部和底部 02.RecyclerView嵌套RecyclerView 条目自动上滚Bug 03.ScrollView嵌套RecyclerView滑动冲突 04.ViewPager嵌套水平RecyclerView

3.8K20

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

】ItemTouchHelper 实现侧滑删除 ( 设置滑动方向 | 启用滑动操作 | 滑动距离判定 | 滑动速度判定 | 设置动画时间 | 设置侧滑触发操作 ) 【Android 事件分发】ItemTouchHelper...中成员变量 private final OnItemTouchListener mOnItemTouchListener ; // 添加了每个条目触摸监听器 mOnItemTouchListener...条目装饰 , 可以在条目组件 底部 上层 绘制 Canvas 图形 // ItemTouchHelper 继承 RecyclerView.ItemDecoration...mRecyclerView.addItemDecoration(this); // 添加了每个条目触摸监听器 mOnItemTouchListener // 该监听器是定义在...RecyclerView 设置条目装饰 , 该装饰可以在条目组件 底部 上层 绘制 Canvas 图形 , 具体方法如下 : public class RecyclerView extends ViewGroup

37020
领券