我在ListView对象中有大约2500个项目的列表。我希望其中一些项目可见,但灰色。对于那些不显示灰色的活动启动一个活动(在我的例子中,这是一个AlertDialog)。我想(例如)前500个项目是活跃的并且具有通常的行为,而其他项目是灰色的并且点击它们什么都不做。
我正在尝试创建的是ListView应用程序的试用版,因此用户只能访问列表中的某些项目以进行演示。
最简单的方法是什么?我只能想到有两个相互追加的列表(第一个是活动的,第二个不是)。理想情况下,我实际上会有交叉列表,这样(例如)每三个项目都是活动的而其他项目不是,但我会选择在同一个列表上运行的两个单独的组,如果这太复杂了。
答案 0 :(得分:0)
只需扩展您正在使用的任何适配器,并在getView()
:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
if(position < 500) {
view.setClickable(false);
view.setEnabled(true);
}
else {
view.setClickable(true);
view.setEnabled(false);
}
return view;
}
我做了你的简单检查(如果行在前500行)然后改变了几个特征。
setEnabled()
将文字变为灰色false
。 setClickable()
当true
阻止ListView接收TouchEvent时。 希望有所帮助!