Android: работа с HashMap.put для изображения - PullRequest
3 голосов
/ 18 февраля 2012

Я хочу добавить изображение в просмотр списка, как мне это сделать?Имена и тип отображаются правильно.В данный момент застрял здесь.

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

3 голосов
/ 18 февраля 2012

Класс R.java генерируется автоматически во время сборки и поддерживает «список» целых чисел, которые являются идентификаторами ресурсов. Другими словами R.<anything> является Integer и не представляет ресурс напрямую (строка, отрисовка и т. Д.).

Поскольку ваш HashMap ожидает String типов для ключей и значений, вам необходимо преобразовать идентификатор ресурса ball_green в String. Пример ...

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

Чтобы использовать его снова, вам придется преобразовать String обратно в Integer при его использовании для установки изображения виджета, например ImageView и т. Д.

1 голос
/ 18 февраля 2012

Я не думаю, что добавление изображения в хеш-таблицу является хорошей идеей. Вы можете легко добавить пользовательский адаптер, не используйте SimpleAdapter.

...