2009-12-22 120 views
197

在Android中,我試圖用偵聽器獲取選定的Spinner值。如何獲得微調值?

獲得微調器價值的最佳方法是什麼?

+1

你一定要接受[dodo's answer](http://stackoverflow.com/a/7486969/1747491)。 – theblang 2014-12-08 21:04:14

回答

478
Spinner mySpinner=(Spinner) findViewById(R.id.your_spinner); 
String text = mySpinner.getSelectedItem().toString(); 
+7

「價值」在這裏很模糊。這將檢索當前的微調項目標題(例如,向用戶顯示的字符串),但如果將int數組映射到微調控件,則不會獲取其值。 – 2015-02-05 13:58:13

+1

@Doge得到所選項目的值,如整數值,例如 我們應該使int [] valuesArray並將其存入onCreate函數,可能來自arrays.xml ,所以我們可以使用valuesArray [(int)mySpinner.getSelectedItemId()] 得到整數值 – 2015-04-22 05:26:38

11

是的,您可以通過setOnItemSelectedListener()註冊聽衆,如演示here所示。

+0

謝謝 - 這也工作了,(我認爲)它使代碼更易於閱讀。 – 2009-12-23 11:10:57

112

微調應該火的時候,一些選擇了 「OnItemSelected」 事件:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { 
     Object item = parent.getItemAtPosition(pos); 
    } 
    public void onNothingSelected(AdapterView<?> parent) { 
    } 
}); 
+0

謝謝 - 工作,雖然我需要添加無效返回類型的方法。 – 2009-12-23 10:43:57

+6

如果不依賴項目的位置,是否真的沒有辦法實現這一點? – Vinz 2011-03-01 21:50:42

+5

如果您想在不依賴選擇事件的情況下閱讀微調器值,這不是一個非常有用的解決方案。 – AndroidDev 2013-11-07 14:38:05

9
View view =(View) getActivity().findViewById(controlId); 
Spinner spinner = (Spinner)view.findViewById(R.id.spinner1); 
String valToSet = spinner.getSelectedItem().toString(); 
8

如果你已經知道項目是String,我更喜歡:

String itemText = (String) mySpinner.getSelectedItem(); 

打電話toString()Object,你知道是String看起來像一個更多迂迴路徑,而不僅僅是將Object改爲String

33

之所以這樣說,是微調項和值,你的XML(即冠軍):

<resources> 
    <string-array name="size_entries"> 
     <item>Small</item> 
     <item>Medium</item> 
     <item>Large</item> 
    </string-array> 

    <string-array name="size_values"> 
     <item>12</item> 
     <item>16</item> 
     <item>20</item> 
    </string-array> 
</resources> 

,這是您的微調:

<Spinner 
    android:id="@+id/size_spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:entries="@array/size_entries" /> 
在你的代碼

然後得到的條目:

Spinner spinner = (Spinner) findViewById(R.id.size_spinner); 
String size = spinner.getSelectedItem().toString(); // Small, Medium, Large 

,並獲取值:

int spinner_pos = spinner.getSelectedItemPosition(); 
String[] size_values = getResources().getStringArray(R.array.size_values); 
int size = Integer.valueOf(size_values[spinner_pos]); // 12, 16, 20 
+0

Thx,這應該在微調框中的官方ANDR文檔中,他們只能通過Listener獲得價值。 – visual 2016-09-04 13:00:10

+0

這正是我期待的 – 2017-06-25 07:17:24