我正在使用AsyncTask
从远程服务器下载图像并在ListView
中显示它们。我正在使用 this blog 来完成它,一切正常。
此博客中唯一的问题是在下载图像时正在显示ColorDrawable。但我想在下载图像时显示默认图像。就像下图所示:
在这里你可以看到:
对于Hellboy来说,图像仍在下载,因此是一种颜色 背景(细黑线)出现在他的名字上。的我 不想显示这条黑线。我想显示默认值 图像就像在Gopala Govinda面前一样,直到图像没有 从服务器上加载Hellboy。
有没有人知道该怎么做?
答案 0 :(得分:1)
我使用以下开源库来管理AsyncTasks中的图像提取: UrlImageViewHelper on GitHub
它可以在您下载实际图像时显示“加载”图像。
您可以使用此库或自行完成此类操作。
如果您是自己动手,当您最初给ImageView
充气时,请使用“加载”图片。然后在AsyncTask
中,一旦下载了图像,就可以通过覆盖onPostExecute
的{{1}}方法来修改此视图(此方法在UI线程上运行,因此您可以修改我们的视图在这种方法中)
答案 1 :(得分:1)
我认为你想要做的是让DownloadedDrawable
类扩展BitmapDrawable
而不是Drawable
,然后选择一个合适的超级构造函数来指定你的默认图像位图: / p>
/**
* A fake Drawable that will be attached to the imageView while the download is in progress.
*
* Contains a reference to the actual download task, so that a download task can be stopped
* if a new binding is required, and makes sure that only the last started download process can
* bind its result, independently of the download finish order.</p>
*/
private static class DownloadedDrawable extends BitmapDrawable {
private final WeakReference<BitmapDownloaderTask>
bitmapDownloaderTaskReference;
private DownloadedDrawable(BitmapDownloaderTask bitmapDownloaderTask,
Resources resources, Bitmap bitmap) {
super(resources, bitmap); // you'll have to provide these
bitmapDownloaderTaskReference =
new WeakReference<BitmapDownloaderTask>(bitmapDownloaderTask);
}
public BitmapDownloaderTask getBitmapDownloaderTask() {
return bitmapDownloaderTaskReference.get();
}
}
答案 2 :(得分:0)
或者您也可以使用此处https://github.com/kaeppler/ignition/wiki/Sample-applications
中的RemoteImageView答案 3 :(得分:0)
在ListAdapter
的{{1}}活动中,只需将默认图片放入ListView
即可。
例如,在ListAdapter Activity的getView中,您可以这样做:
ImageView