Android 在异步任务中下载图像并在ListView中显示
我有一个URL的列表,每个URL对应一个图像 我需要在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的列表
传递给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,最后一个参数是占位符图像