我正在编写一个使用Listview(带有自定义适配器)的程序,我想禁用listview中的一些项目。我这样做是通过使用这个代码(到目前为止很好):
@Override
public boolean isEnabled(int position) {
if ((position == 2 || position == 3) && mBool1) {
return false;
}
return true;
}
然而,这并没有提供任何视觉提示......只是在你设置了布尔mBool1之后,你不能点击位置2和3的列表项,但背景仍然是相同。如何将已禁用列表视图项的背景颜色更改为与已启用的项不同?我试图使用选择器,但我无法找到合适的组合。
答案 0 :(得分:4)
它不应该。所有可视状态都在getView
(或bindView
中进行过滤,具体取决于您使用的适配器类型)。所以你应该做一些像:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Get the view
if(isEnabled(position)) {
view.setBackground(...);
} else {
view.setBackground(...);
}
}