我在我的适配器getView()
中使用Picasso加载的图像的ListView:
if (item.getPicture().contains("http")) {
Picasso.with(context).load(item.getPicture()).placeholder(R.drawable.default_picture).into(holder.imageView);
}
只有第一个单元格获取图像,另外2个单元格显示default_picture。当我滚动所有其他单元格有一个图像。当我向后滚动到顶部时,空白的2个单元格现在显示图像。有没有人见过这个?有没有人知道我如何调试?
答案 0 :(得分:1)
某些图片未加载,因为网址为空或不包含" http"。
您看到空单元格变为非空的原因是视图被回收。因此,您需要调用Picasso或在ImageView
中手动设置getView()
的默认图片,但您永远不能保持ImageView
不受影响。
因为你只是在没有经常清除图像的情况下调用Picasso conditionnaly,所以当URL为空或者不包含" http"时,您的ImageView
仍会包含回收单元格的上一张图像
所以改变你的代码:
if ((item.getPicture() != null) && item.getPicture().contains("http")) {
Picasso.with(context).load(item.getPicture()).placeholder(R.drawable.default_picture).into(holder.imageView);
} else {
holder.imageview.setImageResource(R.drawable.default_picture);
}