2013-08-02 4 views
0

У меня есть вид формы с 3 прядильщиками. Содержание 2 Spinners (minorSpinner) зависит от выбора первого (mainSpinner). Чтобы быть более точным, я установил содержимое этих 2 minorSpinner в слушателе onItemSelected mainSpinner.Подождите, пока Spinner не обновится

Форма может быть сохранена и загружена обратно.

Проблема: Когда я пытаюсь загрузить форму, сначала я устанавливаю mainSpinner, а затем minerSpinners.

Как:

mainSpinner.setSelection(value); 
minorSpinner1.setSelection(value1); 
minorSpinner2.setSelection(value2); 

Unfortunatelly в minorSpinners не готовы вовремя. Может быть, потому, что их значения заданы в потоке пользовательского интерфейса?

Вопрос:

как ждать, пока они не будут готовы?

Что я пробовал:

runOnUIThread(){ 
mainSpinner.setSelection(value); 
minorSpinner1.setSelection(value1); 
minorSpinner2.setSelection(value2); 
} 

но ти не работает :(

Любая идея

ответ

0

как ждать, пока они не будут готовы

Так? моя первая идея - зарегистрировать OnItemSelectedListener() для всех Spinners.

Затем создайте две булевы переменные, например isSpinnerOneSelected, isSpinnerTwoSelected, и когда вы выберете элемент из Spinner, присвойте переменной значение true.

Затем создайте Thread (с помощью Handler), который будет управлять вашими состояниями. Если обе переменные присваиваются true, просто выполните действие с третьим Spinner.

Если вы не знаете, как использовать обработчик, посмотрите на:

+0

гм, так Handler нить должна контролировать, если изменения mainSpinenr? Я не понимаю, почему это помогло бы – Remarkable

+0

В любом случае, я просто понял, что я уже делаю все это в потоке пользовательского интерфейса, поэтому runOnUIThread не нужен :) – Remarkable

+0

@Remarkable вам нужно использовать поток, если вы хотите контролировать или прослушивать в реальном времени. – Sajmon

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