【问题标题】:Old items visible a while, in listview or gridview, when recycling回收时,旧项目在列表视图或网格视图中可见一段时间
【发布时间】:2012-08-11 06:35:26
【问题描述】:

这不是什么大问题,但看起来很奇怪。在列表或网格视图中,我延迟加载图像(例如从远程位置加载)。我正在使用 convertView 回收这些物品。当我快速向下滚动时,我看到旧图像重复出现,直到获取正确的图像并替换它们。

有没有办法改变这种情况?例如,我尝试在 getView() 的一开始(在初始化 convertView 之后,如有必要),将 imageView 可见性设置为 GONE。并在获取图像后设置为VISIBLE。但由于某种原因,这不起作用(看起来仍然一样)。

谢谢!

编辑:我什至不确定这是否是使用回收视图时的正常行为,或者我做错了什么。当互联网连接速度很快或从文件系统获取时,它看起来不像是一个错误。然后新图像加载速度非常快,用户不会看到重复的项目。但在网速较慢的情况下,它看起来像一个错误。

【问题讨论】:

  • 向我们展示您的适配器的代码。它可以通过在每次调用 getView() 时开始实际加载之前简单地将图像设置为 null 来解决。
  • 但这不就像设置为GONE吗?我做了一个测试,在启动线程之前,我在getView() 开始时将所有内容设置为GONE,但没有任何改变(不明白为什么,但这就是我在设备上看到的......)。我会发布一些示例代码。
  • Agh...愚蠢的我;PI将它们设置为GONE,但经过一些其他操作后,在开始获取过程之前再次将它们设置为VISIBLE...再次格式化stackoverflow的代码回答我的一个问题...
  • 太棒了!很高兴你解决了它:-)

标签: android listview gridview recycle


【解决方案1】:

在设置图像之前,只需检查图像是否属于视图内容。

我曾经遇到过同样的问题,我不得不更改我的图像下载器,以便它获取图像 url 以及元数据,这样一旦下载完成,我就可以将元数据与视图数据进行比较。

【讨论】:

  • 但是图像设置在正确的位置。问题是android回收视图,并且在设置图像时,它显示了旧回收视图的内容。
猜你喜欢
  • 1970-01-01
  • 2014-12-08
  • 2016-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2023-02-02
  • 2015-01-11
相关资源
最近更新 更多