这是一个非常常见的场景:在 ListView 中显示必须从 Internet 下载的图像。
现在我有一个用于 ListView 的 ArrayAdapter 的自定义子类。在 ArrayAdapter 的 getView() 实现中,我生成了一个单独的线程来加载图像。加载完成后,它会查找适当的 ImageView 并使用 ImageView.setImageDrawable() 设置图像。所以我使用的解决方案有点类似于这个:Lazy load of images in ListView
我遇到的问题是,只要我在 ImageView 上调用 setImageDrawable(),ListView 就会以某种方式刷新列表中所有当前可见的行!这会导致一种无限循环:
- 调用 getView()
- 产生线程以加载图像
- 图像已加载;在 ImageView 上调用 setImageDrawable()
- ListView 出于某种原因将其拾取并自行刷新
- 为了让 ListView 刷新,每个可见行都会调用 getView(),所以我们回到第 1 步,整个事情会不断重复
据我所知,“Android - 如何在 ListView 中延迟加载图像”(见上面的链接)中提出的解决方案根本不起作用。它可能看起来确实如此,但它会运行得很慢,因为在后台,它会不断重新加载当前可见的行。
有没有人遇到过这个问题和/或有解决方案?