android - 从 RecyclerView 中移除项目并将其插入到另一个位置

标签 android android-recyclerview

我想使用 positiononBindViewHolder 中的 RecyclerView 中删除项目。此位置参数是屏幕上可见 View 的位置,而不是 ArrayList 中项目的实际位置。如果我想从列表中的这个位置删除这个项目并将它移动到屏幕上实际上不可见的 ArrayList 的另一部分(我不知道 onBindViewHolder 位置)我实际上可以以某种方式更新它使用 notifyItemSetChanged() 列出,或者唯一正确的方法是调用 notifyDataSetChanged())?

这有点复杂 RecyclerView 具有多个标题和项目变体(我在 Adapter 中使用 5 个 ViewHolder)。这个适配器的主要目的是改变项目的位置,每次都复制它们。它类似于联系人列表部分。

我的问题的简单表示:

enter image description here

最佳答案

正确的做法是

list.remove(position);
notifyItemRemoved(position);
list.add(newposition,item);
notifyItemInserted(newposition);  

OnBindViewHolder 的位置是列表中项目的位置,这就是您填充 View 的方式

关于android - 从 RecyclerView 中移除项目并将其插入到另一个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608133/

相关文章:

android - 使用相同的回收器适配器来充气不同的 Activity

android - 是否有任何 API 可以识别应用程序在三星设备中处于多窗口模式?

java - 如何从android中的帧缓冲区创建一个png图像

android - ADB Wireless + Windows + 非 root 设备 + 挂起问题

java - 如何提高 MappedByteBuffer 的性能以适应我的用例?

java - 随机排列数组列表

android - 是什么导致此异常 java.lang.RuntimeException : java. lang.NoSuchMethodException : <init> [class android. view.View]

java - 当 layoutManager 的 scrollToPositionWithOffset 时项目的 recyclerView 之间空白

java - ViewPager 内的 RecyclerView 位于另一个 RecyclerView 内不滚动

android - 当日历在 Android 中触发了提醒提醒的接收器时,如何获取事件 ID?