我有一个自定义列表,每行显示图像,文本和图像必须从服务器下载。
所以我已经定制了我的适配器,在那个getView方法中,我已经启动了一个asyn任务来下载图像。
但问题是,如果列表中有50个项目,那么如果我一次从列表中的第1个项目滚动到第50个项目,
然后对于每一行,它将开始下载图像,无论哪一行甚至没有显示......
那么这可能是什么解决方案???
任何帮助都将受到高度赞赏
由于
答案 0 :(得分:0)
这是一个众所周知的问题。阅读Lazy Image Loading并找到类似问题。当你添加convertView用法等时,这不是那么明显的问题。
快速解决方法 - 我建议在ThreadExecutor上下载图像,例如最多4个线程,并取消所有不再需要的任务。当您使用convertView时 - 您可以使用setTag(asyncTask)将任务附加到视图,并在新的任务出现时取消它。您还可以使用LRU缓存来存储一些图像,而不是每次滚动列表时都加载它们。
答案 1 :(得分:-1)
仅为可见行调用getView。因此,如果您在那里开始下载,它将只下载显示的视图。注意:不要自己调用适配器的getView,否则会导致listView出现主要问题。