Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.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_Android Listview - Fatal编程技术网

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

Android 在异步任务中下载图像并在ListView中显示,android,android-listview,Android,Android Listview,我有一个URL的列表,每个URL对应一个图像 我需要在列表视图中显示这些图像 目前,我的方法是将包含URL的列表传递给CustomAdapter(扩展BaseAdapater) ListView中的每一行项目都将使用ImageView进行充气 然后在getView()方法中,如果currentImageView==null,那么我将启动一个AsyncTask,它将下载该imageList.get(position)的位图 然后在postExecute()中,我将设置currentImageVie

我有一个URL的列表,每个URL对应一个图像

我需要在
列表视图中显示这些图像

目前,我的方法是将包含URL的
列表
传递给
CustomAdapter(扩展BaseAdapater)

ListView中的每一行项目都将使用
ImageView
进行充气

然后在
getView()
方法中,如果
currentImageView==null
,那么我将启动一个
AsyncTask
,它将下载该
imageList.get(position)
的位图

然后在
postExecute()
中,我将设置
currentImageView.setBitmap(下载的位图)

通过这种方式,我将从适配器内部为每个映像逐个调用AsyncTask

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

当某个列表元素的AsyncTask正在进行中时,我发现这种方法存在一个陷阱&用户向下滚动然后返回,相同的异步任务将再次被调用


如何防止出现这种情况?

当您的视图被回收时,currentImageView将不会为空,并且将继续显示相同的图像。我建议使用。它为您解决了所有这些问题,并提供了大量额外功能,如缓存等

试试这个

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

UrlImageViewHelper.setUrlDrawable(holder.image, model.getimageURL(), R.drawable.placeholder);
参数一是您的ImageView,第二个参数是图像URL,最后一个参数是占位符图像