2012-02-18 54 views
3

我想添加一個圖像到列表視圖,我該怎麼做?名稱和類型正確顯示。目前卡在這裏。Android:處理圖像的HashMap.put

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

回答

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

+0

我想知道,如果我已經下載了一個位圖,我該如何在map.put(「image」,String.valueOf(bitmapfile))中使用它。 有沒有辦法在這裏連接下載的文件? – Joe 2013-09-17 14:23:30

+0

@Joe:如果你正在下載一個文件(位圖或任何其他類型),它將永遠不會在R.java類中爲它分配一個int值,所以你不必使用'String.valueOf(...) '。 OP使用'HashMap ' - 如果你正在做同樣的事情,那麼簡單地使用下載文件的路徑作爲第二個字符串。 – Squonk 2013-09-18 00:14:24

+0

Ic我會試試看!謝謝回覆 – Joe 2013-09-18 13:38:09

1

我不要認爲將圖像添加到哈希表是一個好主意。您可以輕鬆添加自定義適配器,不要使用SimpleAdapter。