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

如何在删除/添加条目后获取android Recyclerview更新的条目位置

在删除/添加条目后获取RecyclerView更新的条目位置,可以通过以下步骤实现:

  1. 添加条目: a. 在数据源中添加新的条目数据。 b. 调用RecyclerView的Adapter的notifyItemInserted()方法通知RecyclerView插入了新的条目。 c. 在插入条目后,可以通过RecyclerView的LayoutManager的scrollToPosition()方法将RecyclerView滚动到新添加的条目位置。
  2. 删除条目: a. 在数据源中移除指定的条目数据。 b. 调用RecyclerView的Adapter的notifyItemRemoved()方法通知RecyclerView移除了条目。 c. 可以通过RecyclerView的LayoutManager的scrollToPosition()方法将RecyclerView滚动到指定位置。

获取更新后的条目位置的关键在于在Adapter中正确地处理数据源的变化并通知RecyclerView更新。同时,可以通过LayoutManager的findFirstVisibleItemPosition()方法获取可见的第一个条目位置,通过findLastVisibleItemPosition()方法获取可见的最后一个条目位置。

以下是示例代码片段:

代码语言:txt
复制
// 添加条目
int position = ...; // 添加的位置
dataList.add(position, newItem);
adapter.notifyItemInserted(position);
recyclerView.getLayoutManager().scrollToPosition(position);

// 删除条目
int position = ...; // 要删除的位置
dataList.remove(position);
adapter.notifyItemRemoved(position);
recyclerView.getLayoutManager().scrollToPosition(position);

// 获取可见的第一个和最后一个条目位置
int firstVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
int lastVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findLastVisibleItemPosition();

通过以上步骤,可以实现在删除/添加条目后获取更新的RecyclerView条目位置。请注意,这只是一个简单示例,并没有涉及到具体的腾讯云产品和链接。根据具体的应用场景和需求,可以选择适合的腾讯云产品来支持和扩展相应的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【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.3K10

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.8K20

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

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

    60700

    【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.2K20

    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

    62540

    【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.4K00

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

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

    1.4K90

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

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

    1.8K10

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

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

    66120

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

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

    1K20

    【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

    75220

    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.9K20

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

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

    1.4K30

    【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

    40020

    安卓开发——Recycleview

    ( new DividerGridItemDecoration(this )); //设置增加或删除条目的动画 recyclerView.setItemAnimator( new DefaultItemAnimator...后所跟数字相同,如下图所示 修改原有xml文件 为了实现RecyclerView,我们将初始的xml文件修改为ConstrainLayout(约束布局)并添加RecyclerView 代码如下: <...="never" android:scrollbars="none" /> 将微信fragment的布局改为recycleView布局 现在需要将 RecyclerView 添加到上次的微信...微件之后,需要获取对象句柄,将其连接到布局管理器,并为要显示的数据附加适配器 创建适配器实现步骤如下: ① 创建Adapter:创建一个继承RecyclerView.Adapter的Adapter类...在这里,补充一个知识点,关于RecyclerView的调用顺序总是按照: 获取大小——>绑定布局——>加载ViewHolder类——>绑定数据 这样一个规律的,通过这样的规律,我们就能知道是按照怎样的顺序来调用这些重载函数的了

    2.2K11

    界面无小事(三):用RecyclerView + Toolbar做个文件选择器

    前言 github传送门 在之前两期也是说了很多RecyclerView的使用, 这期打算来个实操性质的....= null) { actionBar.setDisplayHomeAsUpEnabled(true); } ---- 填充RecyclerView条目 既然要使用RecyclerView,...思路就是使用Stack进行当前路径存储, 后续每点击一个文件夹就添加一层, 每返回一层, 就弹出一个. // 获取sdcard目录 mSdcardPath = Environment.getExternalStorageDirectory...} } @Override public void onItemLongClick(View view, int position) { } }); 然后对每一个条目添加点击事件...一个比较重要的就是, 在当前的mSelectPath中需要进行确认, 如果已经存在就删除这个选择, 如果不存在, 就选择这个文件, 这个逻辑也是很好理解的. ---- 悬浮按钮 这个也是非常常用的一个视图类

    53020
    领券