我正在使用 GridView 实现自定义日历。对于这个日历,我有 3 种视图类型,{DAY, TITLE, BLANK}
有没有办法让 GridView 中的某些项目不可点击?
我要避免的是不可点击项目的按下状态动画。没关系,用户按下它们,我可以认识到它不是我的 onItemClickListener() 中的有效视图。这纯粹是出于 UI 目的。
我正在使用 GridView 实现自定义日历。对于这个日历,我有 3 种视图类型,{DAY, TITLE, BLANK}
有没有办法让 GridView 中的某些项目不可点击?
我要避免的是不可点击项目的按下状态动画。没关系,用户按下它们,我可以认识到它不是我的 onItemClickListener() 中的有效视图。这纯粹是出于 UI 目的。
我找到了解决方案。不知道为什么我一开始没有搜索 ListViews。
您需要覆盖 isEnabled() 函数返回 false 将使其不可点击。True 将保持可点击。
@Override
public boolean isEnabled(int position) {
switch(getItemViewType(position)) {
case CellTypes.BLANK:
case CellTypes.TITLE:
default :
return false;
case CellTypes.DAY:
return true;
}
}
在 GridView 的适配器中,实现 get() 方法之一以返回对被单击对象的引用。我假设您的适配器包装了您的“日历”对象列表。
在 GridView 的 onItemClickListener 中,调用适配器上的 get(index) 或 get(id) 以获取对被单击对象的引用。检查其类型以查看它是否是您不希望可点击的类型,并在执行单击可点击项目时通常调用的逻辑之前返回。
在 XML 中:android:clickable="false" 和在代码中:setClickable(false);