我正在开发我的第一个应用程序并且已经在这里阅读了很多。
我一直在努力寻找以下问题的解决方案超过一周而没有运气。
我有Adapter
扩展ArrayAdapter
以显示图像,每行显示3行文字。
在getView
内,我为TextView
分配相关信息,并使用ImageLoader
类下载图片并将其分配给ImageView
。
一切都很棒!我的屏幕上有4.5行可见(总共20行)。当我第一次向下滚动时,图像会继续下载并按正确顺序分配到列表中。
但是当我向后滚动列表时,会丢失所有图像,并按正确顺序重新开始重新绘制它们(每张图像0.5-1秒)。从我一直在阅读它是标准的列表性能,但我想改变它。
我想要的是,一旦下载了图像,它将“粘贴”到当前窗口的整个会话的列表中。就像在联系人列表或市场中一样。它只有20张图像(每张6-9kb)。
希望我设法解释自己。
答案 0 :(得分:2)
你需要在下载之后缓存每个图像,并且每次适配器需要它时检查它是否已经下载从缓存(磁盘或内存)获取它,否则下载它。
起初我建议你从android开发网站http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html
阅读本教程答案 1 :(得分:0)
这里的问题是ArrayAdapter在滚动时重用列表视图行,因此当您向下滚动时,顶行将被重用并插入列表的底部(出于性能原因)。
您最好的选择是尝试在设备上本地缓存图像,以避免每次都调用ImageLoader。
解决这个问题的一个非常好的库是点火。它是开源的,可在此处获取:https://github.com/kaeppler/ignition
请查看RemoteImageView
以获取缓存机制的一个很好的示例。