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

Android ListView divider 消失:isEnabled 返回 false 導致,改用 areAllItemsEnabled 返回 true

     編輯:程式設計綜合問答

重寫 ArrayAdapter.isEnabled(position) 返回 false 會導致該項分隔線消失。解決:areAllItemsEnabled() 返回 true,isEnabled 僅對不可點擊項返回 false,分隔線保持顯示。

問題代碼

@Override
public boolean areAllItemsEnabled() {
    return false; // ❌ 導致所有項無分隔線
}

@Override
public boolean isEnabled(int position) {
    return position != disabledPosition; // 某項不可點擊
}

修正代碼

@Override
public boolean areAllItemsEnabled() {
    return true; // ✅ 所有項啟用分隔線
}

@Override
public boolean isEnabled(int position) {
    return position != disabledPosition; // 不可點擊項返回 false,但分隔線仍在
}

原理

  • areAllItemsEnabled() 控制整體分隔線繪製策略。
  • isEnabled() 僅控制項點擊狀態,不影響分隔線(前提 areAllItemsEnabled()==true)。

分離「可點擊」與「顯示分隔線」兩個維度,ListView 外觀行為獨立控制。

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