Android:为图像处理HashMap.put

时间:2012-02-18 08:16:21

标签: android image listview simpleadapter

我想在listview中添加图片,我该怎么办?名称和类型正确显示。目前卡在这里。

.//other codes
.
.
try{
        JSONArray arr = new JSONArray(res);
        for(int i=0;i<arr.length();i++){                        
            HashMap<String, String> map = new HashMap<String, String>();
            JSONObject e = arr.getJSONObject(i);

            map.put("placeID", ""+ e.getString("placeID"));
            map.put("placeName",""+ e.getString("placeName"));
            map.put("placeType", ""+ e.getString("placeType"));
            map.put("image", R.drawable.ball_green);

            mylist.add(map);            
        }       
    }catch(JSONException e)        {
         Log.e("log_tag", "Error parsing data "+e.toString());
    }

    ListAdapter adapter = new SimpleAdapter(this, mylist , R.layout.places, 
                    new String[] { "placeName", "placeType" }, 
                    new int[] { R.id.placeName, R.id.placeType });
.
.
.//other codes

我想要的图像恰如:

ListView

2 个答案:

答案 0 :(得分:3)

R.java类在构建时自动生成,并维护一个作为资源ID的整数'列表'。换句话说,R.<anything>Integer并且不直接表示资源(字符串,可绘制等)。

由于您的HashMap期望密钥和值的String类型,您需要将ball_green资源ID转换为String。实施例...

map.put("image", String.valueOf(R.drawable.ball_green));

为了再次使用它,您必须将String转换为Integer,然后再使用它来设置小部件的图像,例如ImageView等。 / p>

答案 1 :(得分:1)

我不认为将图像添加到哈希表中是一个好主意。您可以轻松添加自定义适配器,不要使用SimpleAdapter。