仅为列表视图中的可见行下载图像

时间:2013-03-18 19:11:44

标签: android android-listview listadapter downloading

我有一个自定义列表,每行显示图像,文本和图像必须从服务器下载。

所以我已经定制了我的适配器,在那个getView方法中,我已经启动了一个asyn任务来下载图像。

但问题是,如果列表中有50个项目,那么如果我一次从列表中的第1个项目滚动到第50个项目,

然后对于每一行,它将开始下载图像,无论哪一行甚至没有显示......

那么这可能是什么解决方案???

任何帮助都将受到高度赞赏

由于

2 个答案:

答案 0 :(得分:0)

这是一个众所周知的问题。阅读Lazy Image Loading并找到类似问题。当你添加convertView用法等时,这不是那么明显的问题。

快速解决方法 - 我建议在ThreadExecutor上下载图像,例如最多4个线程,并取消所有不再需要的任务。当您使用convertView时 - 您可以使用setTag(asyncTask)将任务附加到视图,并在新的任务出现时取消它。您还可以使用LRU缓存来存储一些图像,而不是每次滚动列表时都加载它们。

答案 1 :(得分:-1)

仅为可见行调用getView。因此,如果您在那里开始下载,它将只下载显示的视图。注意:不要自己调用适配器的getView,否则会导致listView出现主要问题。