滚动期间保持图像下载到列表视图中

时间:2012-10-06 20:59:58

标签: android scroll android-arrayadapter

我正在开发我的第一个应用程序并且已经在这里阅读了很多。

我一直在努力寻找以下问题的解决方案超过一周而没有运气。 我有Adapter扩展ArrayAdapter以显示图像,每行显示3行文字。 在getView内,我为TextView分配相关信息,并使用ImageLoader类下载图片并将其分配给ImageView

一切都很棒!我的屏幕上有4.5行可见(总共20行)。当我第一次向下滚动时,图像会继续下载并按正确顺序分配到列表中。

但是当我向后滚动列表时,会丢失所有图像,并按正确顺序重新开始重新绘制它们(每张图像0.5-1秒)。从我一直在阅读它是标准的列表性能,但我想改变它。

我想要的是,一旦下载了图像,它将“粘贴”到当前窗口的整个会话的列表中。就像在联系人列表或市场中一样。它只有20张图像(每张6-9kb)。

希望我设法解释自己。

2 个答案:

答案 0 :(得分:2)

你需要在下载之后缓存每个图像,并且每次适配器需要它时检查它是否已经下载从缓存(磁盘或内存)获取它,否则下载它。

起初我建议你从android开发网站http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

阅读本教程

或使用像这样的外部库https://github.com/koush/UrlImageViewHelper

答案 1 :(得分:0)

这里的问题是ArrayAdapter在滚动时重用列表视图行,因此当您向下滚动时,顶行将被重用并插入列表的底部(出于性能原因)。

您最好的选择是尝试在设备上本地缓存图像,以避免每次都调用ImageLoader。

解决这个问题的一个非常好的库是点火。它是开源的,可在此处获取:https://github.com/kaeppler/ignition

请查看RemoteImageView以获取缓存机制的一个很好的示例。