我得到的问题是:
当我滚动列表视图时,在加载项目(例如x)图像视图之前,滚动后,该项目的(x)图像被加载并显示在其他项目(例如y)的图像视图中,持续很短的时间直到该项目(y)未加载imageview。
我正在使用Android Universal Image Loader库。我在listview 游标适配器的bindView中有以下asynctask:
@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图像之前滚动时)?
listview项目的内部回收会导致问题吗?
答案 0 :(得分:0)
问题似乎与Android Universal Image Loader库有关。我刚搬到毕加索。