在异步任务中下载图像并在ListView中显示它们

时间:2014-04-14 18:49:42

标签: android android-listview

我列出了网址,每个网址都对应图片

我需要在ListView

中显示这些图像

目前,我的方法是将包含此List<String>的网址传递给CustomAdapter (extending BaseAdapater)

ListView中的每个行项目都会以ImageView充实。

然后在getView()方法中,如果currentImageView == null,那么我将开始AsyncTask,它会下载imageList.get(position)的位图。

然后在postExecute()中,我设置currentImageView.setBitmap(downloadedBitmap)

以这种方式,从适配器内部,我将逐个为每个图像调用AsyncTask。

如果您认为,这种方法有问题,请告诉我。另外,请建议正确的方法。

当某个列表元素的AsyncTask正在进行时,我发现了一个方法的缺陷&amp;用户向下滚动然后向上滚动,将再次调用相同的异步任务。

我该如何防止这种情况?

2 个答案:

答案 0 :(得分:1)

当您的视图被回收时,currentImageView将不为null并且它将继续显示相同的图像。我建议使用Universal Image Loader。它可以为您提供所有这些功能,包括缓存和其他功能。

答案 1 :(得分:0)

试试这个library

然后在getView方法中,只需添加此代码

UrlImageViewHelper.setUrlDrawable(holder.image, model.getimageURL(), R.drawable.placeholder);

参数1是您的ImageView,第二个参数是图像URL,最后一个是占位符图像。