Android 如何获得微调器值?

Android 如何获得微调器值?,android,spinner,Android,Spinner,在Android中,我试图通过侦听器获取选定的微调器值 获取微调器值的最佳方法是什么?是的,您可以通过setOnItemSelectedListener()注册侦听器,如图所示。当选择某个对象时,微调器应触发“OnItemSelected”事件: spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView<?&g

在Android中,我试图通过侦听器获取选定的微调器值


获取微调器值的最佳方法是什么?

是的,您可以通过
setOnItemSelectedListener()
注册侦听器,如图所示。

当选择某个对象时,微调器应触发“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) {
    }
});
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
已选择公共位置(AdapterView父项、视图、整数位置、长id){
对象项=父项。getItemAtPosition(pos);
}
未选择公共无效(AdapterView父级){
}
});

如果您已经知道该项目是
字符串,我更喜欢:

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

在您知道是
字符串的
对象上调用
toString()
似乎比将
对象
强制转换为
字符串

更为迂回。假设这是带有微调器项(即标题)和值的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>
要获取值,请执行以下操作:

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

将setOnItemSelectedListener添加到微调器引用,并获得如下数据`

 mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            selectedSize=adapterView.getItemAtPosition(position).toString();
mSizeSpinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共位置(适配器视图适配器视图视图视图视图内部位置长l){
selectedSize=adapterView.getItemAtPosition(位置).toString();

谢谢--虽然我需要将void返回类型添加到方法中,但这还是有效的。如果不依赖项的位置,真的没有办法实现这一点吗?如果您想在不依赖选择事件的情况下读取微调器值,这不是一个非常有用的解决方案。@Patrick注释重写从来都不是必需的,它只是告诉编译器“你能检查一下这个覆盖是否正确吗?”如果没有对默认选中的项目进行任何更改,那么如何获取它呢?@dodo的一个是最合适的。谢谢——这也很有效,而且(我认为)它使代码更容易阅读。“值”在这里很模糊。这检索当前微调器项目标题(如中所示,显示给用户的字符串),但如果您将int数组映射到微调器上,则不显示其值。例如,要获取所选项的值(如整数值),我们应将int[]valuesArray设置为int[]valuesArray,并将其归档到onCreate函数中,该函数可能来自arrays.xml,以便使用valuesArray[(int)mySpinner.getSelectedItemId()]要获取integer valueThx,这应该在spinner上的官方ANDR文档中,他们只显示了通过侦听器获取值。这正是我所寻找的完美解决方案!
android:entries
成就了我的一天。
<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
 mSizeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position, long l) {
            selectedSize=adapterView.getItemAtPosition(position).toString();