在GridView中设置特定项不可点击

5

我想将gridview中某些可点击的项目改为不可点击。我有一个带有自定义适配器和onitemclicklistener的gridview。在我的自定义适配器中,我尝试在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。我不知道是什么原因导致了这种情况...

应该使用isEnabled(value)而不是isEnabled(position)吗? - DeeV
1个回答

9

你实际上在这里做的是重写一个内置方法isEnabled(int),并告诉它始终返回false。这将导致你的适配器始终告诉网格其单元格不应启用。

实际上,你要找的是更像这样的东西

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

关键在于你不是在调用 isEnabled 方法。你是在重写 isEnabled 方法,而 GridView 会自动调用它以确定哪些单元格应该可点击,哪些不应该。因此,你不应该在代码中任何地方为此目的调用 isEnabled 方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接