RecyclerView滚动图片错乱:空URL项显示其他项图片求助
解决RecyclerView滚动图片错乱问题
- 核心原因是RecyclerView的ViewHolder复用机制,加上Glide未正确处理空URL场景,导致旧的加载请求或已加载的图片残留到复用的Item上。
具体修复步骤:
- 绑定ViewHolder时,先清除ImageView之前的Glide加载请求,避免旧请求覆盖当前设置
- 显式判断图片URL是否为空/Null,针对性处理:
- 空URL时直接设置占位图(或清空ImageView)
- 有效URL时再执行Glide加载
修改后的代码示例:
// 先清除之前的加载任务,防止复用ViewHolder时旧请求干扰 Glide.with(context).clear(imgMovie) val imageUrl = rideData.driver.image_with_url if (imageUrl.isNullOrEmpty()) { // URL为空时直接设置占位图 imgMovie.setImageResource(R.drawable.placeholder) } else { Glide.with(context) .load(imageUrl) .placeholder(R.drawable.placeholder) .circleCrop() .into(imgMovie) }
额外注意点:
- 确保在Paging3的Adapter(或原生Adapter)的
onBindViewHolder中,每次绑定都严格使用当前Item的rideData,不要依赖ViewHolder的缓存状态 - 如果你之前没有手动处理空URL,Glide遇到空URL时不会主动清除ImageView已有的内容,复用旧ViewHolder时就会显示之前加载的图片,多次滚动后所有Item都被复用一遍,就会出现“所有项都显示图片”的情况
内容的提问来源于stack exchange,提问作者Flutter Developer
相关产品推荐
相关产品推荐

