GridViewを使用してカスタムカレンダーを実装しています。このカレンダーには、{DAY、TITLE、BLANK}の3つのビュータイプがあります。
GridViewの特定のアイテムをクリックできないようにする方法はありますか?
私が避けようとしているのは、クリックできないアイテムのプレス状態のアニメーションです。ユーザーがそれらを押しても大丈夫です。onItemClickListener()の有効なビューではないことを認識できます。これは純粋にUIの目的です。
GridViewを使用してカスタムカレンダーを実装しています。このカレンダーには、{DAY、TITLE、BLANK}の3つのビュータイプがあります。
GridViewの特定のアイテムをクリックできないようにする方法はありますか?
私が避けようとしているのは、クリックできないアイテムのプレス状態のアニメーションです。ユーザーがそれらを押しても大丈夫です。onItemClickListener()の有効なビューではないことを認識できます。これは純粋にUIの目的です。
解決策を見つけました。そもそも ListViews を検索しなかった理由がわかりません。
isEnabled() 関数をオーバーライドする必要があります false を返すと、クリックできなくなります。True will keep はクリック可能です。
@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() メソッドの 1 つを実装して、クリックされているオブジェクトへの参照を返します。アダプターが「Calendar」オブジェクトのリストをラップしていると想定しています。
GridView の onItemClickListener で、アダプタで get(index) または get(id) を呼び出して、クリックされているオブジェクトへの参照を取得します。そのタイプをチェックして、クリック可能にしたくないタイプかどうかを確認し、クリック可能なアイテムがクリックされたときに通常呼び出されるロジックを実行する前に戻ります。
XML の場合: android:clickable="false" およびコードの場合: setClickable(false);