我正在尝试将gridview中的某些项目从可点击设置为不可点击。所以我有一个带有自定义适配器的gridview和一个onitemclicklistener。在我的自定义适配器中,我尝试在我的getView方法中执行以下操作:(因为我读到了关于调用isEnabled ..)
if(int value < 5) { //item can not be clickable
isEnabled(position);
} else {
//other things happen, but isEnabled is not called here in any case
}
//......
@Override
public boolean isEnabled(int position) {
return false;
}
奇怪的是,现在每个项目都不可点击,尽管有些项目的值是&gt; 5 ..我不知道造成这种情况的原因......
答案 0 :(得分:9)
所以你在这里实际做的是覆盖内置方法isEnabled(int)
并告诉它总是返回false。这导致您的适配器始终告诉您的网格不应启用其单元格。
你真正想要的是更像是
public boolean isEnabled(int position)
{
if(position < 5)
return false;
else
return true;
}
这里的关键是你不是那个叫isEnabled
的人。您正在覆盖isEnabled
,GridView
会自动调用它来确定哪些单元格可以点击,哪些单元格不应该点击。因此,为此,您不应该在代码中的任何位置实际调用isEnabled
。