Android Spinner: получить событие изменения выбранного элемента - PullRequest
365 голосов
/ 27 августа 2009

Как настроить прослушиватель событий для Spinner при изменении выбранного элемента?

По сути, я пытаюсь сделать что-то похожее на это:

spinner1.onSelectionChange = handleSelectionChange;

void handleSelectionChange(Object sender){
    //handle event
}

Ответы [ 15 ]

3 голосов
/ 11 ноября 2013
spinner.setOnItemSelectedListener(
            new AdapterView.OnItemSelectedListener() {

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

                    // TODO Auto-generated method stub
                }

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

                }
                //add some code here
            }
        );
1 голос
/ 09 января 2019

Это будет работать инициализировать спиннер и findviewbyid и использовать его, он будет работать

    Spinner schemeStatusSpinner;

  schemeStatusSpinner = (Spinner) dialog.findViewById(R.id.spinner);

schemeStatusSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            // your code here
            if(schemeStatusSpinner.getSelectedItemId()==4){
                reasonll.setVisibility(View.VISIBLE);
            }
            else {
                reasonll.setVisibility(View.GONE);
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });
1 голос
/ 16 марта 2012

Лучший способ, как мне кажется, иметь flagitemselected = 0; в создании. И при увеличении события выбранного элемента этот флаг, т.е. flagitemselected ++; и затем проверьте, если (flagitemselected! = 1) {// сделайте вашу работу здесь}. Это поможет, я думаю,

1 голос
/ 31 декабря 2009

Бриллиант вышеупомянутого Стефана Клумппа также мне очень помог. Спасибо. Я новичок, и "@Override" в нем вызвало ошибку о "должны переопределить метод класса Super с тем же именем" Затмение предложило мне удалить переопределения. Когда я сделал это, это сработало. Пожалуйста, не спрашивайте меня, как и почему.

0 голосов
/ 10 августа 2012

Одна хитрость, которую я нашел, заключалась в том, чтобы поместить ваши setOnItemSelectedListeners в onWindowFocusChanged вместо onCreate. Я не нашел никаких побочных эффектов, если бы сделал это таким образом. По сути, настройте слушателей после того, как окно будет нарисовано. Я не уверен, как часто запускается onWindowFocusChanged, но достаточно легко создать себе переменную блокировки, если вы обнаружите, что она работает слишком часто.

Я думаю, что Android может использовать систему обработки сообщений, и если вы поместите все это в onCreate, вы можете столкнуться с ситуациями, когда счетчик заполняется после его рисования. Таким образом, ваш слушатель отключится после того, как вы установите местоположение элемента. Конечно, это обоснованное предположение, но не стесняйтесь меня поправлять.

...