Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 滚动期间,将下载的图像保留在listview中_Android_Scroll_Android Arrayadapter - Fatal编程技术网

Android 滚动期间,将下载的图像保留在listview中

Android 滚动期间,将下载的图像保留在listview中,android,scroll,android-arrayadapter,Android,Scroll,Android Arrayadapter,我正在开发我的第一个应用程序,在这里读了很多书 一个多星期以来,我一直在努力寻找解决以下问题的方法,但运气不佳。 我有一个适配器,它扩展了ArrayAdapter,在每行显示图像和3行文本。 在getView中,我为TextViews分配相关信息,并使用ImageLoader类下载图像并将其分配给ImageView 一切都很好!我的屏幕上有4.5行可见(总共20行)。当我第一次向下滚动时,图像会继续下载并按正确的顺序分配到列表中 但当我向后滚动时,列表会松开所有图像,并开始以正确的顺序重新绘制它

我正在开发我的第一个应用程序,在这里读了很多书

一个多星期以来,我一直在努力寻找解决以下问题的方法,但运气不佳。 我有一个
适配器
,它扩展了
ArrayAdapter
,在每行显示图像和3行文本。 在
getView
中,我为
TextView
s分配相关信息,并使用
ImageLoader
类下载图像并将其分配给
ImageView

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

但当我向后滚动时,列表会松开所有图像,并开始以正确的顺序重新绘制它们(每幅图像0.5-1秒)。据我所知,这是标准的列表性能,但我想改变它

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


希望我能解释清楚。

下载后,您需要缓存每个映像,每次适配器需要它时,都要检查它是否已经下载,然后从缓存(磁盘或内存)中获取,否则就下载它

首先,我建议您从android开发站点阅读本教程


或者使用像这样的外部库这里的问题是ArrayAdapter在您滚动时重用列表视图行,因此当您向下滚动时,将重用顶部行并将其插入列表底部(出于性能原因)

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

解决这个问题的一个很好的库是点火。它是开源的,可在以下位置获得:


查看
RemoteImageView
,了解缓存机制的一个好例子。

非常感谢!我浏览了dev站点并下载了他们的示例,试图理解我的错误,但这超出了我目前的开发技能(正如我所提到的,我正在开发我的第一个应用程序-我没有提到我以前没有java经验)。所以我最终使用了你给我的外部库。工作起来很有魅力!谢谢,但正如我在回答上述解决方案时所说的,我仍然很难理解不同的缓存机制。。因此,在尝试理解您提议的
RemoteImageView
课程几分钟后,我暂时放弃了——我会回来更好地了解这个问题,但不是现在。