android:在listview中显示图像

时间:2014-08-19 09:22:13

标签: android android-layout android-listview

我正在尝试使用JSON解析从url在listview中显示图像。图像网址在日志中正确显示。当我试图下载图像并显示在列表中获取bmImage.setImageBitmap(result)中的NullPointerException; 我正在使用以下代码,任何人都可以告诉我解决方案..

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

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {

        Bitmap bt_img = null;


        try {
             FileInputStream in = new FileInputStream(urls[0]);

             InputStream in = new java.net.URL(urls[0]).openStream();
             bt_img = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
             Log.e("Error", e.getMessage());
             e.printStackTrace();
        }
        return bt_img;
    } 

    protected void onPostExecute(Bitmap result) {
        try {
            bmImage.setImageBitmap(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

3 个答案:

答案 0 :(得分:0)

如果在bmImage变量上遇到nullPointerException,则表示尚未初始化。在您提供的代码中,您没有获得它的引用,您必须将它传递给AsyncTask。

传递bmImage引用,调用AsyncTask的代码是什么?问题似乎出在那个代码中,而不是AsyncTask本身。

答案 1 :(得分:0)

 1)  best way is use Lazy Loding 
    and
 2) second way is try this code,
    try {
            URL imageURL = new URL(imgUrl);
            qrBitmap = BitmapFactory.decodeStream(imageURL.openStream());

            image.setImageBitmap(qrBitmap);

            } catch (Exception e) {
            Log.d("QRDisplay", e.getMessage());
            }

答案 2 :(得分:-1)

您必须使用Universal Image Loader从服务器获取图像。

此链接有助于您

https://github.com/nostra13/Android-Universal-Image-Loader