2017-02-17 21 views
1

Spinner автоматически выдает onItemSelected после установки адаптера, и я хотел бы избежать его без какого-либо обходного пути, например, с использованием флагов для проверки, является ли это в первый раз; добавьте слушателя после настройки адаптера или любой такой проверки.Избегайте автоматического вызова функции Spinner onItemSelected после setAdapter

Есть ли у кого-нибудь идеи о том, как это сделать?

+0

Это вредит вашей логике или создает некоторые проблемы? –

+0

вы хотите чего-то, что не нужно, и там для этого не должно существовать. Правильное решение - установить слушателя после настройки адаптера, как и для меня. –

+0

@AbdulWaheed оба. Это вредит моей логике, которая вызывает проблему. –

ответ

0

Вы можете сделать одну вещь, добавить один элемент в первую позицию (с нулевым индексом), а затем добавить свои фактические элементы в массив (список массивов) и метод getView()(), проверить первую позицию (это означает o index) установить высоту для этого элемента на 0. Я надеюсь, что это поможет вам.

+0

Я бы хотел простое решение. Это обходное решение, и я хочу его избежать. –

+0

Я также столкнулся с подобной ситуацией и не нашел подходящего решения. Я использовал эту работу. –

0

Вслед работал для меня,

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 
spinner.setSelected(false); // otherwise listener will be called on initialization 
spinner.setSelection(0,true); // otherwise listener will be called on initialization 
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    .. listener code 
} 

Пожалуйста, обратите внимание, что порядок важен. Надеюсь, это помогло.

+0

Я установил прослушиватели только один раз и много раз задавал выбор в разных частях моего кода, поэтому это решение будет иметь дело с первым 'setSelection'. –

+0

@ Lennon Надеюсь, вы попробовали код, пожалуйста, используйте spinner.setSelection (0, true), где вы однажды устанавливаете своего слушателя. Это решит вашу проблему, чтобы избежать нежелательного вызова onItemSelected. После этого вы можете свободно использовать setSelection, как вам нравится, это не повредит. – Faisal

 Смежные вопросы

  • Нет связанных вопросов^_^