滚动时Android RecyclerView重复项目

Ray*_*der 8 android scroll move android-recyclerview

我有一个问题RecyclerView.当我在RV中移动项目然后滚动时,看到一些项目已重复.

Zub*_*man 31

我知道它迟到但希望它能帮到某个人.在适配器中重写这两种方法.

@Override
public long getItemId(int position) {
    return position;
}

@Override
public int getItemViewType(int position) {
   return position;
}
Run Code Online (Sandbox Code Playgroud)

  • 给出一些解释:getItemViewType的默认实现返回0,并假设适配器使用单一视图类型。覆盖它会使适配器知道存在多种视图类型,并进行相应调整。 (2认同)

Hus*_*ine 8

我想我来晚了,但无论如何我会建议一种对我有用的方法,也许有人仍然面临这个问题。所以
,我将我的回收器视图添加到nestedScrollView中,然后禁用我的回收器视图的嵌套滚动。

使用此方法,nestedScrollView 将检测到滚动,并且 recyclerview 在滚动时停止重复项目。

这是我的 xml 代码:

<androidx.core.widget.NestedScrollView
     android:layout_width="match_parent"
     android:layout_height="match_parent">

     <androidx.recyclerview.widget.RecyclerView
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:nestedScrollingEnabled="false"/>

</androidx.core.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

  • 很高兴听到@PinkRabbits,但请记住,这将停止 recyclerview 的主要功能,即回收物品。 (2认同)

小智 1

RecyclerView将回收视图。当您删除数据、调用notifyItemChanged(pos)notifyDataSetChanged()方法时。