1

我正在使用 GridView 实现自定义日历。对于这个日历,我有 3 种视图类型,{DAY, TITLE, BLANK}

有没有办法让 GridView 中的某些项目不可点击?

我要避免的是不可点击项目的按下状态动画。没关系,用户按下它们,我可以认识到它不是我的 onItemClickListener() 中的有效视图。这纯粹是出于 UI 目的。

4

3 回答 3

4

我找到了解决方案。不知道为什么我一开始没有搜索 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;
    }
}
于 2012-06-15T20:44:14.513 回答
0

在 GridView 的适配器中,实现 get() 方法之一以返回对被单击对象的引用。我假设您的适配器包装了您的“日历”对象列表。

在 GridView 的 onItemClickListener 中,调用适配器上的 get(index) 或 get(id) 以获取对被单击对象的引用。检查其类型以查看它是否是您不希望可点击的类型,并在执行单击可点击项目时通常调用的逻辑之前返回。

于 2012-06-14T15:41:00.330 回答
-1

在 XML 中:android:clickable="false" 和在代码中:setClickable(false);

于 2012-06-14T15:38:14.153 回答