2009-12-22 64 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

相关问题