常見原因
getCount() 返回 0 → 列表為空;
getView() 返回 null 或未正確綁定數據;
ViewHolder 模式使用錯誤(未復用 convertView、findViewById 重複)。
排查步驟
@Override
public int getCount() {
return dataList == null ? 0 : dataList.size(); // 確保非 0
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
// 關鍵:綁定數據
holder.text1.setText(dataList.get(position).getText1());
holder.text2.setText(dataList.get(position).getText2());
return convertView; // 不能返回 null
}
ViewHolder 正確模式
static class ViewHolder {
TextView text1, text2;
ViewHolder(View v) {
text1 = v.findViewById(R.id.text1);
text2 = v.findViewById(R.id.text2);
}
}