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

Android ListView 中整數轉字串顯示的空指針異常解決方案

     編輯:程式設計綜合問答

在 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());

根本原因

  1. getTemp_c() 等方法返回 Integer 物件而非基本型別 int
  2. 當資料為 null 時,自動拆箱會拋出 NullPointerException
  3. TextView.setText(int) 會被識別為資源 ID 查找,而非字串顯示

解決方案

方法一:使用 String.valueOf() 安全轉換(推薦)

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" 字串),避免空指針異常。

方法二:手動 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
  • 網路資料解析階段即做好 null 防護與預設值設置
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved