我正在尝试使用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();
}
}
}
答案 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从服务器获取图像。
此链接有助于您