在 ListView 中,我有图像、文本和包含默认图像的图像,在图像上我有一个下载按钮。当列表加载并下载完成时,一切正常,但是当我滚动 list-view 时,图像只是变成了静态图像。
最佳答案
发生这种情况是因为在 ListView 中, View 被回收。一旦你滚动,显示出来的 View 就会被回收并在另一行中重复使用,从而导致图像困惑等......
您必须在适配器中使用 ViewHolder 模式来处理此问题。将您所有的 View 添加到您的 viewholder 对象并使用它们来设置图像、文本等...这将停止您想要的效果。
参见:https://dzone.com/articles/optimizing-your-listview教程
另见:https://developer.android.com/training/improving-layouts/smooth-scrolling.html从谷歌获取详细信息。
注意:如果您从 Internet 下载图像,则需要缓存机制或使用 Picasso、Fresco... 或此类库来处理缓慢收敛到正确图像的问题。
我建议图书馆的原因如下:
1) 当你滚动时,图像将再次进入网络下载,同时你的静态占位符将出现。下载您的图像需要一段时间。此外,除非您实现自己的自定义缓存机制,否则它将始终去下载图像。
2) 当您滚动时,即使 View 不在显示范围内,您生成的下载线程也会继续运行。
3) 我提到的库会自行处理缓存...当您的 View 离开屏幕时它们会取消请求...它们会自行处理垃圾回收...
关于android - 当在 ListView 中滚动更新数据更改为以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694492/