重寫 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 外觀行為獨立控制。