在 ListView 的 Adapter 中將資料模型的整數欄位設置到 TextView 時,常遇到空指針異常。這通常是因為資料為 null 或型別不匹配導致。
// 註釋掉的代碼嘗試直接設置整數值
// temp.setText(Voicenames.get(position).getTemp_c());
// dewpoint.setText(Voicenames.get(position).getDewpoint_c());
// windspeed.setText(Voicenames.get(position).getWind_kph());
getTemp_c() 等方法返回 Integer 物件而非基本型別 intNullPointerExceptionTextView.setText(int) 會被識別為資源 ID 查找,而非字串顯示temp.setText(String.valueOf(Voicenames.get(position).getTemp_c()));
dewpoint.setText(String.valueOf(Voicenames.get(position).getDewpoint_c()));
windspeed.setText(String.valueOf(Voicenames.get(position).getWind_kph()));
String.valueOf() 能安全處理 null 值(返回 "null" 字串),避免空指針異常。
Integer tempValue = Voicenames.get(position).getTemp_c();
temp.setText(tempValue != null ? tempValue.toString() : "N/A");
在解析 JSON 時確保數值欄位有預設值:
// JSON 解析示例
int temp = jsonObject.optInt("temp_c", 0); // 提供預設值 0
voicename.setTemp_c(temp);
String.valueOf() 進行物件到字串轉換int 而非包裝類 Integer