我获取文本,添加到ListView,然后获取图像,但在尝试从适配器内的项目获取ImageView以设置图像时获取null。我做错了什么?
//AsyncTask For Texts.
private class pgData extends AsyncTask<String, String, JSONArray> {
//CODES HERE ARE WORKING FINE...
protected void onPostExecute(JSONArray result) {
//CODES HERE ARE WORKING FINE...
lv = (ListView) findViewById(R.id.listView);
lv.setAdapter(adapter);
new Image().execute();//Executing Async Task For Image
}
}
//AsyncTask For Image.
private class Image extends AsyncTask<String, String, JSONArray> {
//CODES HERE ARE WORKING FINE...
protected void onPostExecute(JSONArray result) {
String img;
ImageView imv;
l = result.length();
JSONObject jsonObject;
for (int i = 0; i < l; i++) {
try {
jsonObject = result.getJSONObject(i);
img = "\n" + jsonObject.getString("image1") + "\n";
rawImage=Base64.decode(img, Base64.DEFAULT);
bmp = BitmapFactory.decodeByteArray(rawImage, 0, rawImage.length);
imv=adapter.getItem(i).imageview; //Getting null in imv
imv.setImageBitmap(bmp); //Thus this creates null pointer exception
adapter.notifyDataSetChanged();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG).show();
}
}
}
}
答案 0 :(得分:1)
我终于明白了! 而不是:
imv=adapter.getItem(i).imageview;
代码必须是:
imv = (ImageView) lv.getChildAt(i).findViewById(R.id.image1);
答案 1 :(得分:0)
我建议您使用单独的库来下载图片,例如Piccasso或UniversalImageLoader。