Listview动态加载的图像 - 第一个列表项显示列表视图中加载的所有图像,然后清除

时间:2014-07-12 04:13:57

标签: android listview android-listview

所以我动态加载每个listview项目的网址图片。

问题:

我似乎有一个错误,在加载listview时,第一个listview项目的ImageView会闪烁所有listview项目的所有图像。在所有这些加载之后,listview项目逐个显示它们的图像,第一个获得正确的图像。

我不确定发生了什么,为什么会发生这种情况。

这是我的图片加载AsyncTask。

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    private final WeakReference bmImage;

    public DownloadImageTask(ImageView image) {
        bmImage = new WeakReference(image);
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap bitmap ) {
        if (isCancelled()) {
            bitmap  = null;
        }

        if (bmImage != null) {
            ImageView imageView = (ImageView)bmImage.get();

            // if the imageView was not retrieved
            if (imageView != null) {

                // if the image source is not empty
                if(bitmap != null){
                    imageView.setImageBitmap(bitmap);
                }else{
                    // set placeholder image
                    imageView.setImageDrawable(imageView.getContext().getResources()
                            .getDrawable(R.drawable.social_eyes_bare_owl));
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我遇到了类似图片下载器的相同问题。问题可能不在下载程序中,而是在您从中提供URL的位置。因此,如果可能,您可以更新调用此图像加载器的代码。