android 列表视图适配器异步任务图像加载
android listview adapter asynctask image load
我遇到的问题是:
当我在加载一个项目(比如 x)的图像视图之前滚动列表视图,然后在滚动之后,该项目的(x)图像被加载并显示在其他项目(比如 y)的图像视图中很短的时间,直到该项目 (y) imageview 未加载。
我正在使用 Android 通用图像加载器库。我的 listview cursor adapter:
的 bindView 中有以下异步任务
@Override
public void bindView(View view, Context context, Cursor cursor) {
...
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
new DownloadImageAsyncTask(url, imageView).execute();
...
}
private class DownloadImageAsyncTask extends AsyncTask<Void, Void, Bitmap> {
String image_link;
ImageView imageView;
final WeakReference<ImageView> viewReference;
public DownloadImageAsyncTask(String image_link, ImageView imageView) {
this.image_link = image_link;
this.imageView = imageView;
viewReference = new WeakReference<ImageView>( imageView );
}
@Override
protected Bitmap doInBackground(Void... params) {
... // downloading bitmap here
}
@Override
protected void onPostExecute(Bitmap bitmap) {
ImageView imageView = viewReference.get();
if( imageView != null ) {
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisk(true).cacheInMemory(true)
.showImageOnFail(R.drawable.ic_contact_picture)
.displayer(new FadeInBitmapDisplayer(300)).build();
imageLoader.displayImage(image_link, imageView, options); // new options will be used
}
}
}
为什么应该在项目 x 中的图像在项目 y 中显示的时间很短(在加载项目 x 图像之前滚动)?
列表视图项目的内部回收是否导致了问题?
问题似乎出在 Android Universal Image Loader 库上。我刚刚转向毕加索。
我遇到的问题是:
当我在加载一个项目(比如 x)的图像视图之前滚动列表视图,然后在滚动之后,该项目的(x)图像被加载并显示在其他项目(比如 y)的图像视图中很短的时间,直到该项目 (y) imageview 未加载。
我正在使用 Android 通用图像加载器库。我的 listview cursor adapter:
的 bindView 中有以下异步任务@Override
public void bindView(View view, Context context, Cursor cursor) {
...
ImageView imageView = (ImageView) view.findViewById(R.id.icon);
new DownloadImageAsyncTask(url, imageView).execute();
...
}
private class DownloadImageAsyncTask extends AsyncTask<Void, Void, Bitmap> {
String image_link;
ImageView imageView;
final WeakReference<ImageView> viewReference;
public DownloadImageAsyncTask(String image_link, ImageView imageView) {
this.image_link = image_link;
this.imageView = imageView;
viewReference = new WeakReference<ImageView>( imageView );
}
@Override
protected Bitmap doInBackground(Void... params) {
... // downloading bitmap here
}
@Override
protected void onPostExecute(Bitmap bitmap) {
ImageView imageView = viewReference.get();
if( imageView != null ) {
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheOnDisk(true).cacheInMemory(true)
.showImageOnFail(R.drawable.ic_contact_picture)
.displayer(new FadeInBitmapDisplayer(300)).build();
imageLoader.displayImage(image_link, imageView, options); // new options will be used
}
}
}
为什么应该在项目 x 中的图像在项目 y 中显示的时间很短(在加载项目 x 图像之前滚动)?
列表视图项目的内部回收是否导致了问题?
问题似乎出在 Android Universal Image Loader 库上。我刚刚转向毕加索。