2014-02-09 2 views
0

У меня есть код, в котором 36 spinners инициализируются некоторыми значениями по умолчанию.onItemSelected get called late

Перед инициализацией всех из них я устанавливаю значение, называемое listen to false. После инициализации всех из них я устанавливаю его в true.

В onItemSelected, я исполняю код, если прослушивание истинно.

Я тщательно проанализировал свой код и обнаружил, что onItemSelected получает имя AFTER, намного БОЛЬШЕ ПОСЛЕ того, как устанавливаются прядильщики. Фактически, он вызывается после отображения всего представления.

Кажется, что прошло некоторое время между тем, что я устанавливаю счетчик и вызывается onItemSelected. Разве это не называется сразу?

Как это решить?

ответ

0

Ваш код запускает процесс инициализации элементов-счетчиков, устанавливает listen = true, вы щелкаете, остальная часть представления инициализируется, а затем вызывается ваш onItemSelected?

Это связано с тем, что событие click будет храниться в очереди до тех пор, пока MainThread не имеет ничего другого, но он застрял в инициализации других элементов представления и сначала вернется, если это будет сделано.

Почему ваш процесс инициализации для всего представления занимает так много времени? Если это из-за IO (Network/DB), вы должны прочитать о Loader-Pattern.

+0

listen = false, spinners init, listen = true. Тогда весь вид загружается. Затем без какого-либо щелчка вызывается onItemSelected. –

+0

И где вы вызываете onItemSelected, когда он не вызывается автоматически через UI-событие? – Murmel

+0

Я не называю это сам. Возможно ли это, кстати? –

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