簡體   English   中英

從微調選擇中獲取價值

[英]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進行操作,則有兩種選擇:

  1. 取得使用valueINeed的代碼,並將其全部放入onItemSelected函數中
  2. 創建一個單獨的函數,從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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM