3

我想将图像添加到列表视图中,我该怎么做?名称和类型显示正确。目前卡在这里。

.//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

我想要适当的图像,例如:

列表显示

4

2 回答 2

4

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

由于您HashMap期望String键和值的类型,因此您需要将ball_green资源 id 转换为String. 例子...

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

为了再次使用它,您必须在使用它来设置小部件(例如等)的图像时将其转换String回。IntegerImageView

于 2012-02-18T08:27:33.113 回答
1

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

于 2012-02-18T08:31:33.803 回答