2012-10-02 31 views
5

我想在我的GridView中将某些项目从可点击设置为不可点击。所以我有一个自定义适配器和onitemclicklistener gridview。在我的定义适配器,我试着做我的getView方法如下:(因为我读有关调用的IsEnabled ..)在gridview中设置某个项目不可点击

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 ..我不知道是什么原因造成这...

+0

它应该是'isEnabled(value)'而不是'isEnabled(position)'? – DeeV

回答

9

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

你实际上是在寻找什么东西更像

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

这里的关键是,你是不是一个叫isEnabled。您优先于isEnabled,而GridView会自动调用它以确定哪些单元格应该可点击,哪些不应该。所以你不应该为了这个目的在你的代码的任何地方实际调用isEnabled

+0

好的,我明白了。这听起来很清楚!谢谢! –

相关问题