在 ListView 的 getView 中根據數據動態顯示/隱藏 ImageView 時,常犯錯誤是使用 ImageView.INVISIBLE 而非 View.INVISIBLE 或 View.GONE,導致邏輯失效。
// ❌ 錯誤:ImageView 沒有 INVISIBLE 常量
holder.dueDate.setVisibility(ImageView.INVISIBLE);
// ✅ 正確:View 類定義了可見性常量
holder.dueDate.setVisibility(View.INVISIBLE); // 佔據空間但不顯示
holder.dueDate.setVisibility(View.GONE); // 不佔據空間,完全隱藏
holder.dueDate.setVisibility(View.VISIBLE); // 顯示
// 假設 readit == 1 表示已讀,隱藏圖標;否則顯示未讀圖標
if (readit == 1) {
holder.read.setVisibility(View.GONE); // 或 INVISIBLE
} else {
holder.read.setVisibility(View.VISIBLE);
holder.read.setImageResource(R.drawable.unread);
}
getView 都要根據當前數據重置可見性,否則複用導致錯亂。setImageResource 與 setVisibility 連用。bindData 方法中,保持 getView 簡潔。記住:可見性常量定義在 View 類中,所有控件通用,別寫成具體控件類名。