5

我正在尝试将我的 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;

    }

奇怪的是,现在每个项目都不可点击,虽然有些项目的值> 5..我不知道是什么原因造成的......

4

1 回答 1

9

所以你实际上在这里做的是覆盖一个内置方法isEnabled(int)并告诉它总是返回false。这导致您的适配器总是告诉您的网格不应启用其单元格。

你真正在寻找的是更像

public boolean isEnabled(int position) 
{
    if(position < 5)
        return false;
    else
        return true;
}

这里的关键是你不是那个打电话的人isEnabled。您正在覆盖isEnabled,并且GridView正在自动调用它以确定哪些单元格应该是可点击的,哪些不应该。因此,您永远不应该isEnabled为此目的在代码中的任何地方实际调用。

于 2012-10-02T14:28:37.687 回答