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 库上。我刚刚转向毕加索。