使用他们的URL显示多个图像到带有JSON的listview

时间:2012-03-08 05:33:43

标签: android json image url listview

我一直在尝试将我的图片网址加载到第一个必须下载的列表视图中,有人可以帮助我。

HashMap<String, String> map = new HashMap<String, String>();
 map.put("id", String.valueOf(i));
 map.put("name", "House name:" + json_data.getString("name"));
map.put("address", "Adress: " + json_data.getString("address"));

URL newurl = new URL(json_data.getString("imageUrl"));
 itmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(result).getContent());
 ImageView imagy = (ImageView)findViewById(R.id.image);
 imagy.setImageBitmap(bitmap); 
  map.put("img",bitmap);//error is here says convert bitmap to type string
  mylist.add(map);

2 个答案:

答案 0 :(得分:1)

您正在使用此代码做什么?

 URL newurl = new URL(json_data.getString("imageUrl"));
            Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(result).getContent());
            ImageView imagy = (ImageView)findViewById(R.id.image);
              imagy.setImageBitmap(bitmap); 
             map.put("img",bitmap);//error is here says convert bitmap to type string

            mylist.add(map);

因为您每次都在执行findViewById()并设置图像位图。然后你加入了mylist。

<强>建议: 相反,我建议你只在HashMap中添加URL字符串:

String strImageURL = json_data.getString("imageUrl");
map.put("img",strImageURL );/

在为ListView定义自定义适配器时,只需在自定义适配器的 getView()方法中执行此操作(可以通过扩展 BaseAdapter )。

建议2: 如果你想在ListView中实现延迟加载图像,那么请查看Fedor在这里给出的答案:Android - How do I do a lazy load of images in ListView

答案 1 :(得分:1)

我希望,你的实际HashMap HashMap map = new HashMap();

如果是这样,你只能添加String值。 尝试以下,

class House {
    int id;
    String houseName;
    String houseAddress;
    Bitmap image;
}

List<House> houseList = new ArrayList<House> ();

House houseObj = new House();

houseObj.id = i;
houseObj.houseName = "House name:" + json_data.getString("name");
houseObj.address = "Adress: " + json_data.getString("address");

URL newurl = new URL(json_data.getString("imageUrl"));
Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(result).getContent());
ImageView imagy = (ImageView)findViewById(R.id.image);
imagy.setImageBitmap(bitmap); 

houseObj.image = bitmap;

houseList.add(houseObj);

在listview适配器中使用此列表。