Объекты в HashMap — переход к адаптеру ListView

Можно ли передать как строки, так и рисунки как объекты в одном и том же HashMap, а затем использовать этот хэш-карту для заполнения ListView через SimpleAdapter?

Я хочу этого, потому что сначала получаю данные JSON, которые также содержат URL-адрес эскиза. Затем я загружаю эту миниатюру. Соответствующий код (я думаю):

for (...) {
    ...
    InputStream is = (InputStream)content;

    Drawable image = Drawable.createFromStream(is, "src");

    // Hashmap          
    HashMap<String, Object> map = new HashMap<String, Object>();

    map.put("title", new String(jsonObject.getString("Title")));
    map.put("thumb", image);

    mylist.add(map);
}

ListAdapter adapter = new SimpleAdapter(getActivity(), mylist, R.layout.listitem,
        new String[] { "title", "thumb"},
        new int[] { R.id.title, R.id.thumb });

setListAdapter(adapter);

R.id.title = TextView и R.id.thumb = ImageView

Это работает для строки заголовка, но не для рисования. Такой подход просто глуп?

Заранее спасибо.


person Kjell-Bear    schedule 25.01.2012    source источник


Ответы (2)


вам следует создать XML-файл макета для представления вашей строки в списке и настраиваемый адаптер, который раздувает вашу строку

person Gal Ben-Haim    schedule 25.01.2012
comment
Поскольку это SimpleAdapter, я бы предпочел поставить ViewBinder, прежде чем полностью реализовать свой собственный адаптер. - person Giulio Piancastelli; 26.01.2012

Насколько я могу судить из документации SimpleAdapter, поддерживаются только ImageView для привязки с идентификатором ресурса или String, который (я имею в виду String) должен представлять ресурс изображения или URI изображения. Это не сработает, если вы передадите ему напрямую объект Drawable.

person Giulio Piancastelli    schedule 25.01.2012