所以我在适配器中有以下代码:
@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项。因此重新绑定肯定不是一种选择。
谢谢,
答案 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
的添加可能是不必要的;它似乎有点完整。