2013-08-02 43 views
0

我有一種3 Spinners的形式。 2 Spinners(minorSpinner)的內容取決於第一個(mainSpinner)的選擇。更確切地說,我在mainSpinner的onItemSelected偵聽器中設置了這2個minorSpinner的內容。等待Spinner刷新

表單可以保存並重新加載。

問題是: 當我嘗試加載表單時,首先設置了mainSpinner,然後設置了minerSpinners。

像:

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

可惜的是在minorSpinners都未能及時準備就緒。也許是因爲它們的值是在UI線程中設置的?

問:

如何等待,直到他們準備好了?

我的嘗試:

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

但TI不工作:(

任何想法

回答

0

如何等待,直到他們準備

所以?我的第一個想法是爲所有Spinners註冊OnItemSelectedListener()

然後創建兩個布爾變量,例如isSpinnerOneSelected,isSpinnerTwoSelected,當您從Spinner中選擇項目時,將變量賦值爲true。

然後創建一些Thread(與處理程序),將控制您的狀態。如果兩個變量都被賦值爲true,則只需使用第三個Spinner進行操作。

如果你不知道如何使用處理程序,看看:

+0

HM,所以處理線程應該如果mainSpinenr變化監測?我不明白爲什麼它會有所幫助 – Remarkable

+0

無論如何,我只是意識到我已經在UI線程中使用了所有這些東西,所以runOnUIThread是不必要的:) – Remarkable

+0

@Remarkable @Remarkable如果您想要實時控制或偵聽器,則需要使用線程。 – Sajmon