0

セパレーター付きのカスタム ListView を作成しました (このチュートリアルを使用)。見た目も動作も問題ありませんが、セパレーターは引き続きクリック可能で、フォーカス可能であり、コンテキスト メニューを呼び出すことができます。だから私は「彼らを黙らせる」ことを試みました:

...
case TYPE_SEPARATOR:
    convertView.setFocusable(false);
    convertView.setClickable(false);
    convertView.setLongClickable(false);
    break;
        }

return convertView;

しかし、彼らはこれらの設定を完全に無視します! テスト目的で使用covertView.setBackground(Color.MAGENTA)しましたが、うまく機能します。誰が何が間違っているのか考えましたか?

4

1 に答える 1

0

アダプターが BaseAdapter (ArrayAdapter など) を実装するものであると仮定すると、アダプターのisEnabled()メソッドをオーバーライドします。

@Override
public boolean isEnabled(int position) {
    if (getItemViewType(postion) == TYPE_SEPARATOR) {  // method taken from example
        return false;
    }
    return super.isEnabled(position);
}

どの項目がセパレーターで、どれがそうでないかを追跡するには、ArrayList または追跡する他のタイプのコレクションを保持します。

于 2011-08-26T19:30:20.810 に答える