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

Android 自定義 Adapter 中正確控制 ImageView 顯示/隱藏

     編輯:程式設計綜合問答

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

ViewHolder 模式中的注意事項

  • 每次 getView 都要根據當前數據重置可見性,否則複用導致錯亂。
  • 若圖片資源也需切換,setImageResource 與 setVisibility 連用。
  • 複雜邏輯建議封裝到 bindData 方法中,保持 getView 簡潔。

記住:可見性常量定義在 View 類中,所有控件通用,別寫成具體控件類名。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved