RecyclerView 混淆项目
RecyclerView Mixing Up Items
我有一个 RecyclerView,它显示通过 RecyclerView 适配器从 Internet 下载的图像和文本列表。当我上下滚动 RecyclerView 时出现问题。当我最初向下滚动列表时,一切似乎都很好,所有 CardView(包含图像和一些文本的卡片视图)都在各自的位置。
但是,当我开始向上滚动时,所有以前的 CardView 都被最低的 CardView 替换了。 recyclerview 的最低项被重新使用以替换 RecyclerView 中的所有先前项目。
这是 RecyclerView 的错误吗?如果没有,是否可以通过清除 RecyclerView 的缓存或强制 RecyclerView 回收正确的项目来解决此问题?
这实际上是我的适配器实现中的一个问题。我在覆盖的 onBindViewHolder 方法中有一个游标,每次它调用 cursor.moveToNext()
时,游标都会向前移动,除非它是数据库中的最后一行。那时它会停在最后一行。因此,当我向上滚动屏幕时,recyclerview 工作得很好,除了现在它向我显示了光标给它的最后一行的相同数据。最初我认为这可能是一个 recyclerview 错误,但事实证明,这是我的代码中的一个错误。为了解决这个问题,我只是将 cursor.moveToNext()
更改为 cursor.moveToPosition(position)
,它开始按预期显示结果。
我有一个 RecyclerView,它显示通过 RecyclerView 适配器从 Internet 下载的图像和文本列表。当我上下滚动 RecyclerView 时出现问题。当我最初向下滚动列表时,一切似乎都很好,所有 CardView(包含图像和一些文本的卡片视图)都在各自的位置。
但是,当我开始向上滚动时,所有以前的 CardView 都被最低的 CardView 替换了。 recyclerview 的最低项被重新使用以替换 RecyclerView 中的所有先前项目。
这是 RecyclerView 的错误吗?如果没有,是否可以通过清除 RecyclerView 的缓存或强制 RecyclerView 回收正确的项目来解决此问题?
这实际上是我的适配器实现中的一个问题。我在覆盖的 onBindViewHolder 方法中有一个游标,每次它调用 cursor.moveToNext()
时,游标都会向前移动,除非它是数据库中的最后一行。那时它会停在最后一行。因此,当我向上滚动屏幕时,recyclerview 工作得很好,除了现在它向我显示了光标给它的最后一行的相同数据。最初我认为这可能是一个 recyclerview 错误,但事实证明,这是我的代码中的一个错误。为了解决这个问题,我只是将 cursor.moveToNext()
更改为 cursor.moveToPosition(position)
,它开始按预期显示结果。