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