我一直在寻找有关如何执行此操作的示例。在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"
/>
请告诉我我做错了什么。
答案 0 :(得分: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 });