0

我一直在寻找有关如何执行此操作的示例。在 StackOverflow 上发现了一种使用 SimpleAdapter 和 HashMaps 的方法。这是我的代码。它不工作。我所能看到的只是列表的空行。

listItems = new ArrayList<HashMap<String,Object>>();

HashMap<String,Object> listData1 = new HashMap<String,Object>();
HashMap<String,Object> listData2 = new HashMap<String,Object>();

image_1 = getResources().getDrawable(R.drawable.camera_icon_focus_dim);
image_2 = getResources().getDrawable(R.drawable.camera_icon_scene_mode);

listData1.put("icon focus", image_1);
listData2.put("icon_scene", image_2);

listItems.add(listData1);
listItems.add(listData2);

SimpleAdapter listItemAdapter = new SimpleAdapter(this, listItems,
  R.layout.image_list_item, new String[]{"icon_focus"}, 
  new int[]{R.id.list_view_item1});

optionsList.setAdapter(listItemAdapter);

image_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<ImageView   xmlns:android="http://schemas.android.com/apk/res/android"
        android:paddingTop="12dip"       
        android:layout_width="wrap_content"       
        android:layout_height="wrap_content"        
        android:id="@+id/listitem_img"
    />

list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_view_item1"
android:layout_width="wrap_content"
android:layout_height="0dip"
android:layout_weight="1.0"
/>

请告诉我我做错了什么。

4

1 回答 1

4

HashMap需要匹配的字段。试试这个:

listItems = new ArrayList<HashMap<String,Integer>>();
String fieldName = "icon_id";

HashMap<String, Integer> listData1 = new HashMap<String, Integer>();
HashMap<String, Integer> listData2 = new HashMap<String, Integer>();

listData1.put(fieldName, R.drawable.camera_icon_focus_dim);
listData2.put(fieldName, R.drawable.camera_icon_scene_mode);

listItems.add(listData1);
listItems.add(listData2);

SimpleAdapter listItemAdapter = new SimpleAdapter(
    this,
    listItems,
    R.layout.image_list_item,
    new String[] { fieldName },
    new int[] { R.id.listitem_img });
于 2011-12-07T07:42:07.167 回答