15

ユーザーがスピナー値を選択したときに onClick イベントをキャプチャしたいと考えています。

OnClickListener次のコードを実装して使用しようとしました。

@Override
public void onClick(final View view) {
  if (view == countrySpinner) {
    Toast.makeText(this, "Override OK!", 3);
  }
}

そしてバインディング:

countrySpinner.setOnClickListener(this);

これはコンパイルRuntimeExceptionされますOnItemClickListenerOnClickListenerAdapterView.

その onClick イベントをキャプチャするにはどうすればよいですか?

4

3 に答える 3

23

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

spinner.setOnTouchListener(spinnerOnTouch);
spinner.setOnKeyListener(spinnerOnKey);

そしてリスナー:

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;
        }
    }
};
于 2012-04-18T15:52:22.487 に答える