我创建了一个带分隔符的自定义ListView(使用this教程)。它外观和工作正常,但分隔符仍然可点击,可聚焦,并能够获得一个调用的上下文菜单。所以我试图“闭嘴”:
...
case TYPE_SEPARATOR:
convertView.setFocusable(false);
convertView.setClickable(false);
convertView.setLongClickable(false);
break;
}
return convertView;
但他们完全忽略了这些设置!出于测试目的,我使用covertView.setBackground(Color.MAGENTA)
并且效果很好。任何人都知道可能出错了什么?
答案 0 :(得分:0)
假设您的适配器是实现BaseAdapter的适配器(例如ArrayAdapter),请覆盖适配器中的isEnabled()方法。
@Override
public boolean isEnabled(int position) {
if (getItemViewType(postion) == TYPE_SEPARATOR) { // method taken from example
return false;
}
return super.isEnabled(position);
}
要跟踪哪些项目是分隔符以及哪些项目不是,请保留一个ArrayList或其他类型的集合来跟踪。