使用 XListView (或類似 Pull-to-Refresh ListView) 進行下拉刷新/上拉載入後,列表出現佈局錯位、資料列數減少。
onRefresh()/onLoadMore() 回調中,檢查解析後的資料列表 List<T> 筆數、內容是否正確。**若資料源已正確,問題在 Adapter/佈局;若資料源缺漏,問題在後端 API/解析邏輯。**getView() 是否正確重用 convertView?ViewHolder 模式是否正確綁定視圖?notifyDataSetChanged() 前正確更新了內部資料集合?getViewTypeCount/getItemViewType) 類型判斷是否正確?layout_width/height 是否為 match_parent/wrap_content 正確?layout_height 是否被父佈局壓縮?pageIndex 遞增邏輯是否正確?getView 中 position 需扣除 Header 數量。// 錯誤:直接覆蓋列表導致舊資料遺失 (若為上拉載入)
adapter.setData(newList);
// 正確:上拉載入追加
adapter.addAll(newList);
// 或
oldList.addAll(newList);
adapter.notifyDataSetChanged();
XListView 為早期第三方庫,已停止維護。建議遷移至:
先確認資料源完整性,再檢視 Adapter 更新邏輯與 Item 佈局,多數佈局錯亂、資料遺失問題可定位解決。