почему onNothingSelected не вызывается - PullRequest
5 голосов
/ 30 ноября 2011

Выбор элемента обтекателя при запуске действия

  spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                  Toast.makeText(parent.getContext(), "The country is " +
                     position , Toast.LENGTH_LONG).show();

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

            }
        });

при запуске действия при вызове метода onItemSelected

Я хочу, чтобы при запуске действия не было тост-сообщения.пользователь выберет элемент.

Ответы [ 2 ]

4 голосов
/ 30 ноября 2011

Вы должны использовать флаг для поддержания этого состояния.Когда ваше действие начинается, у Spinner уже есть первые выбранные элементы, поэтому его onItemSelected вызывается при запуске действия.

Вы можете управлять этим с помощью двух переменных типа int.

int first_spinner = 0, first_spinner_counter = 0;

Теперь, когда вы инициализируете набор вращателей first_spinner = 1;, затем добавляете Слушатель

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {

                  if (first_spinner_counter < first_spinner) {
                          first_spinner_counter++;
                    } 
                  else 
                  {
                     Toast.makeText(parent.getContext(), "The country is " +
                     position , Toast.LENGTH_LONG).show();
                  }
            }
            public void onNothingSelected(AdapterView<?> parent) {
                return;
            }
        });
0 голосов
/ 18 сентября 2014

Просто проверьте положение. Когда Spinner срабатывает, он выбирает первую позицию по умолчанию

if(position==0)
//donothing
else
{
// do your part here
}
...