SimpleAdapter adapter = new SimpleAdapter(
this, list, R.layout.item,
new String[]{"圖片"},
new Integer[]{R.id.image}); // 編譯報錯:構造方法不匹配
from 是 String[] (Map 的 key),to 必須是 int[] (View 的 resource ID),不能用 Integer[]。Map 反覆 put 同一 key,導致列表中所有項指向同一 Map 對象,且只有最後一個值生效。// 1. 準備數據:每項獨立 Map
List
| 參數 | 類型 | 說明 |
|---|---|---|
| context | Context | 通常傳 this (Activity) |
| data | List<Map<String, ?>> | 每個 Map 對應一行,key 與 from 對應 |
| resource | int | 單項佈局 layout resource ID |
| from | String[] | Map 中的 key 名稱數組 |
| to | int[] | 目標 View 的 resource ID 數組 (必須是 int[]) |
adapter.setViewBinder(new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if (view instanceof ImageView && data instanceof Integer) {
((ImageView) view).setImageResource((Integer) data);
return true; // 已處理
}
return false; // 默認處理
}
});
避免在 Map 中存資源 ID 時被 toString() 變成數字文本顯示在 TextView 上。