2

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

一个多星期以来,我一直试图为以下问题找到解决方案,但没有成功。我有一个Adapter扩展ArrayAdapter以在每行中显示图像和 3 行文本。在里面getView我为 s 分配相关信息TextView并使用ImageLoader类下载图像并将其分配给ImageView.

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

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

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

希望我设法解释自己。

4

2 回答 2

2

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

起初,我建议您从 android 开发网站http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html阅读本教程

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

于 2012-10-06T21:22:36.707 回答
0

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

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

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

看一下RemoteImageView缓存机制的一个很好的例子。

于 2012-10-06T21:23:28.790 回答