首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java SimpleAdapter 建構子未定義錯誤排查指南

     編輯:程式設計疑難解答

錯誤現象

The constructor SimpleAdapter(new View.OnClickListener(){}, List>, int, String[], int[]) is undefined

Eclipse 提示建構子不匹配,甚至自動修復添加分號後仍報錯。

根因分析

  1. 參數類型不匹配:第一個參數傳入 View.OnClickListener,但 SimpleAdapter 建構子要求第一參為 Context。
  2. 泛型聲明缺失: List> 應為 List<Map<String, Object>>,鍵值對應 from 陣列。
  3. 導入包錯誤:誤用 android.widget.SimpleAdapter 而非自定義同名類,或版本不一致。

正確用法示例

List<Map<String, Object>> data = new ArrayList<>();
Map<String, Object> item = new HashMap<>();
item.put("name", "張三");
item.put("age", 25);
data.add(item);

SimpleAdapter adapter = new SimpleAdapter(
    this,                    // Context
    data,                    // List<Map<String, Object>>
    R.layout.item_layout,    // resource
    new String[]{"name", "age"}, // from
    new int[]{R.id.tv_name, R.id.tv_age} // to
);
listView.setAdapter(adapter);

排查清單

  • 確認 Context 來源:Activity 用 this,Fragment 用 getContext(),Adapter 內部用 parent.getContext()。
  • 檢查 from 字符串陣列與 Map 鍵完全一致(區分大小寫)。
  • 檢查 to 資源 ID 陣列對應的 View 存在於 item 佈局中。
  • 清理專案:Project → Clean,排除編譯緩存干擾。

若仍報錯,請貼出完整建構子調用代碼與導入語句,進一步定位是編譯期錯誤還是運行時 ClassCastException。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved