android - 禁用Listview项目单击并重新启用它

时间:2011-04-04 18:59:34

标签: android listview adapter

所以我在适配器中有以下代码:

@Override
    public boolean isEnabled(int position) 
    {
         GeneralItem item = super.getItem(position);
         boolean retVal = true;


            if (item != null)
            {
                if (currSection != some_condition)
                retVal = !(item.shouldBeDisabled());
            }
         return retVal;
     }


    public boolean areAllItemsEnabled() 
    {
        return false;
    }

这里的问题:所以如果我在初始绑定期间禁用了我的项目,现在我在屏幕上引发事件并且无论如何都需要启用它们。在执行该操作后,我是否再次重新绑定它?

例如:

onCreate{

// create and bind to adapter
// this will disable items at certain positions 

}

onSomeClick{

I need the same listview with same items available for click no matter what the conditions of positions are, so I need them all enabled. What actions should I call on the adapter? 

}

问题是我也可以拥有一个非常长的列表视图。它假设支持6000项。因此重新绑定肯定不是一种选择。

谢谢,

1 个答案:

答案 0 :(得分:26)

如何在适配器上安装实例变量:

boolean ignoreDisabled = false;

然后在areAllItemsEnabled

public boolean areAllItemsEnabled() {
    return ignoreDisabled;
}

然后在isEnabled的开头:

public boolean isEnabled(int position) {
    if (areAllItemsEnabled()) {
        return true;
    }
     ... rest of your current isEnabled method ...
}

然后,您可以通过适当设置ignoreDisabled并在invalidate上调用ListView来切换这两种模式。

请注意,isEnabled的添加可能是不必要的;它似乎有点完整。