Как захватить событие onClick в Android для spinner

Я хочу захватить событие onClick, когда пользователь выбирает значение spinner.

Я пробовал реализации OnClickListener и, используя следующий код:

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

и связывания с:

countrySpinner.setOnClickListener(this);

это компилируется, но я получаю RuntimeException советуешь мне использовать OnItemClickListener, а не OnClickListener на AdapterView.

как я могу захватить это событие onClick?

2 ответов


вместо установки 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;
        }
    }
};

Не рассматривайте счетчик Как кнопку, кнопки имеют события onClick. У прядильщиков есть onitemselected события.

вы должны захватить Onitemselected событие Spinner, как это:

import android.widget.AdapterView;

Spinner productname_spinner =(Spinner) findViewById(R.id.your_spinner);

productname_spinner.setOnItemSelectedListener(
    new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

        Object item = parent.getItemAtPosition(pos);
        System.out.println(item.toString());     //prints the text in spinner item.

    }
    public void onNothingSelected(AdapterView<?> parent) {
    }
});