2012-02-18 18 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種類を期待しているとして、あなたはStringball_greenリソースIDを変換する必要があります。例は...

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

再びそれを使用するためには、などImageView

+0

私はビットマップをダウンロードしたら、map.put( "image"、String.valueOf(bitmapfile)); ダウンロードしたファイルをここに接続する方法はありますか? – Joe

+0

@Joe:ファイル(ビットマップまたはその他のタイプ)をダウンロードしている場合、R.javaクラスのint値は決して割り当てられないので、 'String.valueOf(...)を使用する必要はありません。 '。 OPは 'HashMap 'を使っていました。もしあなたが同じことをしているのであれば、ダウンロードしたファイルのパスを2番目の文字列として使うだけです。 – Squonk

+0

Ic私はそれを試してみましょう!返信いただきありがとうございます – Joe

1

Iとして、ウィジェットの画像を設定するためにそれを使用するときにバックIntegerからStringことを変換する必要がありますハッシュテーブルに画像を追加するのは良い考えだとは思わない。あなたは簡単にカスタムアダプターを追加することができます、SimpleAdapterを使用しないでください。