如何获取Spinner的选定值?

53

我正在尝试从一个Spinner中获取所选项的字符串。到目前为止,我已经得到了这个:

bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());

这个方法不起作用,会抛出一个类转换异常(我以为可以将继承自View的小部件强制转换为View。显然不行!)那么如何获取Spinner的选定值呢?

9个回答

74
要获取Spinner的选定值,可以参考这个示例
创建一个嵌套类,实现AdapterView.OnItemSelectedListener接口。这将提供一个回调方法,当用户从Spinner中选择项目时,该方法将通知您的应用程序。
在该类的"onItemSelected"方法中,您可以获取所选项目的值:
public class YourItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        String selected = parent.getItemAtPosition(pos).toString();
    }

    public void onNothingSelected(AdapterView parent) {
        // Do nothing.
    }
}

最后,你的ItemSelectedListener需要在Spinner中注册:

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

谢谢,这看起来很棒!你所说的嵌套是指在另一个方法中吗(例如,在新视图的onCreate中)? - Matthew Hall
欢迎。嵌套类:http://java.sun.com/docs/books/tutorial/java/javaOO/nested.html - jalopaba
31
如果你只是想稍后从下拉框中读取值,可以避免全部代码,而使用 mySpinner.getSelectedItem().toString() - ToolmakerSteve
但是,那么如何在其他方法中使用这个值呢? - erical

55

46

只需使用以下代码:

spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();

这将给你Spinner中所选项的String


2
我会点赞这个解决方案,因为如果目标只是从Spinner获取选定的值,则接受的答案似乎过多。 - ashack
6
fields.getSelectedItem().toString()的意思相当于更简短的表达方式。 - ToolmakerSteve

16

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) 基于 Rich 的描述而工作。


1
mySpinner.getSelectedItem() 是一个更短的等价形式。然后添加 .toString() 以将其作为字符串获取。 - ToolmakerSteve

5

取决于您希望在哪个点上“捕获”该值。

例如,如果您想在用户更改微调器选定项目时立即捕获该值,请使用监听器方法(由jalopaba提供)

如果您希望在用户执行最终任务(如单击提交按钮或其他操作)时捕获该值,则Rich提供的答案更好。


2
这是另一种方式:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int pos, long arg3) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });

1
要仅获取Spinner中的字符串值,请使用以下代码:
spinner.getSelectedItem().toString();

0
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();

如果Spinner的值是int类型,则将其强制转换为int类型。
int valueinInt=(int)(spinner.getSelectedItem());

0

使用有用的代码/语法来简单地获取所选索引/值并将其分配给适当的变量;

int i = ((Spinner)findViewById(R.id.spinnerDistance)).getSelectedItemPosition();
String s = ((Spinner)findViewById(R.id.spinnerDistance)).getSelectedItem().toString();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接