[英]Getting a value from a Spinner selection
我希望微調器在用戶選擇項目后將值返回給我。
我知道我可以使用一個按鈕,然后在OnClick()中使用spinner.getSelectedItemPosition(),但是我希望一旦用戶在微調器選項中進行選擇,就立即返回該值。 因此,我曾考慮使用OnItemSelectedListener。
int valueINeed;
subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
int index = arg0.getSelectedItemPosition();
//I now want to somehow get the value of the index for use outside of this code block
}
我顯然不能使用直接return
語句,因為該方法具有void
返回類型。 此外,除非將valueINeed final
設置valueINeed = index
否則我無法設置valueINeed = index
。 我不確定我要這樣做,如果用戶改變主意並且需要重新分配值,會發生什么?
謝謝!
只需聲明變量int valueINeed;
作為全局變量。 比您可以使用以下功能:
subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
valueINeed = subGoalSpinner.getSelectedItemPosition();
//I now want to somehow get the value of the index for use outside of this code block
}
TronicZomB的答案是正確的,但是全局變量更改時不會通知您。 如果需要在Spinner
對其進行更改后立即對valueINeed
進行操作,則有兩種選擇:
valueINeed
的代碼,並將其全部放入onItemSelected
函數中 onItemSelected
函數中調用。 #2的示例:
subGoalSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3)
{
valueINeed = subGoalSpinner.getSelectedItemPosition();
updateView(valueINeed);
}
}
在這種情況下, updateView
是一個將valueINeed
作為參數並對其執行某些操作的函數(例如更新TextView
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.