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

Android SimpleAdapter 崩潰排查:ListView 與 Adapter 初始化順序錯誤

     編輯:程式設計疑難解答

初學者常在 onCreate 中直接呼叫 listview.setAdapter(simp_adapter) 卻忘記先實例化 ListView 與 SimpleAdapter,導致 NullPointerException。錯誤程式碼典型特徵:

listview.setAdapter(simp_adapter); // listview 尚未 findViewById
simp_adapter = new SimpleAdapter(...); // adapter 在 setAdapter 之後才 new

正確初始化順序

  1. 先綁定佈局: setContentView(R.layout.activity_main);
  2. 實例化 ListView: listview = (ListView) findViewById(R.id.xxx); (xxx 為 XML 中 ListView 的 id)
  3. 準備資料並建立 Adapter: simp_adapter = new SimpleAdapter(this, getData(), ...);
  4. 最後設定 Adapter: listview.setAdapter(simp_adapter);

補充提醒

  • getData() 內部不應依賴 datalist 成員變數已初始化,建議在方法內部 new ArrayList<>() 並回傳。
  • 若資料來源後續會變動,請呼叫 simp_adapter.notifyDataSetChanged() 而非重新 setAdapter。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved