1

スピナーがクリックされたかどうかを取得したいのですが、ユーザーがスピナーをクリックした場合にのみ、どのアイテムが選択されているかには興味がありません。試してみると、「AdapterView で setOnClickListener を呼び出さないでください...」というコンパイラ エラーがスローされます。OnItemClickListener を使用する必要があることはわかっていますが、この場合、情報ではなくクリックのみをキャッチしたいのです。同じプロセスの複数のビューで同じリスナーを使用しています。

4

3 に答える 3

1

次のコードを使用できます。役立つ場合があります。

スピナーの を設定する代わりに、 と を設定してOnClickListenerみてください。OnTouchListenerOnKeyListener

spinner.setOnTouchListener(spinnerOnTouch);
spinner.setOnKeyListener(spinnerOnKey);
and the listeners:

private View.OnTouchListener spinnerOnTouch = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_UP) {
            //Your code
        }
        return false;
    }
};
private static View.OnKeyListener spinnerOnKey = new View.OnKeyListener() {
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
            //your code
            return true;
        } else {
            return false;
        }
    }
};
于 2013-06-14T14:29:50.700 に答える
0

次のオプションがあります。

MySpinner1) メソッドを拡張Spinnerしてオーバーライドするクラスを作成しますonTouchEvent。ユーザーが をクリックしたかどうかをキャッチできますSpinner

2) 実際に設定しOnItemClickListenerます。基本的に、このリスナーはSpinner、アイテムがクリックされるたびに起動され、Spinnerそれ自体はすべてのアイテムに過ぎないため、クリックされるたびに起動されます。

于 2013-06-14T14:27:48.170 に答える
0

Activity は OnItemSelectedListener を拡張する必要があります。
次に、アクティビティは 2 つの関数を実装する必要があります

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
        long arg3) {


}

@Override
public void onNothingSelected(AdapterView<?> arg0) {
    // TODO Auto-generated method stub

}

このようにスピナーにリスナーを追加することを忘れないでください

yourspinner.setOnItemSelectedListener(this);
于 2013-06-14T14:48:17.810 に答える