我正在开始一个基于Cannot enable/disable clickable TextView inside GridView的新线程。
我发现,如果适配器连接到ListView而不是GridView,则只会调用覆盖isEnabled和来自BaseAdapter的areAllItemsEnabled:
这里不会调用这两个覆盖:
gridview.setAdapter(new MyCustomAdapter(this));
然而,在这里他们将被称为:
listview.setAdapter(new MyCustomAdapter(this));
所以,现在回到我原来的问题(见上文):如何切换GridView项目的启用状态(例如启用/禁用TextViews作为我的项目)?有解决方法吗?谢谢!
答案 0 :(得分:1)
我发现如果适配器连接到ListView而不是GridView
,则只会调用覆盖isEnabled和来自BaseAdapter的areAllItemsEnabled。
正确。虽然这些方法是在Adapter
上实施的,但它们是ListView
的一项功能,而不是AdapterView
的功能。
如何切换GridView项目的启用状态(例如启用/禁用TextViews作为我的项目)?
没有“我的GridView项目的启用状态”,AFAIK。如果它们在GridView
中,则会启用它们。我们欢迎您创建自己的GridView
克隆,尝试在ListView实现中实现您在lookForSelectablePositionOnScreen()
中找到的内容,但这不太容易。
我建议不要首先在GridView
中放置不可选择的项目,或者在视觉上改变它们(例如,将它们变灰)并在用户点击它们时忽略它们。
答案 1 :(得分:0)
我正在寻找一种在GridView中解除项目/视图的方法。
我正在扩展BaseAdapter并添加
@Override
public boolean isEnabled(int position) {
System.out.println("isEnabled?");
if (position == 0)
return true;
return MyPreferences.getInstance(context).isLessonAccessible(validLessons.get(position));
}
始终应该启用第一个条目,并且对于每个其他项目,我将检查是否应该启用它。每次单击GridView中的Item时都会调用该方法。我认为同样的规则也适用于列表视图。