如何获得Spinner的选定值?

Mat*_*all 51 java android spinner

我试图从a中获取所选项目字符串Spinner.到目前为止,我已经得到了这个:

bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString());
Run Code Online (Sandbox Code Playgroud)

这不起作用,并给出一个类转换异常(我以为我可以View转换为继承它的小部件.显然不是!)那么如何获得a的选定值Spinner

jal*_*aba 73

要获取微调器的选定值,您可以按照此示例进行操作.

创建一个实现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.
    }
}
Run Code Online (Sandbox Code Playgroud)

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

spinner.setOnItemSelectedListener(new MyOnItemSelectedListener());
Run Code Online (Sandbox Code Playgroud)

  • 或者,如果您以后只想从微调器中读取值,则可以避免所有代码并执行`mySpinner.getSelectedItem().toString()`. (29认同)

Ric*_*ich 53

你有来自Spinner派生的AdapterView类的getSelectedXXX方法:

getSelectedItem()

getSelectedItemPosition()

getSelectedItemId()


Tha*_*nda 43

只需使用:

spinner.getItemAtPosition(spinner.getSelectedItemPosition()).toString();
Run Code Online (Sandbox Code Playgroud)

这将为您String提供所选项目Spinner.

  • `fields.getSelectedItem().toString()`是一个更短的等价物. (5认同)
  • 我正在推动这个解决方案,因为如果目标只是从Spinner获得所选值,那么接受的答案似乎过多了. (2认同)

Chr*_*pix 16

mySpinner.getItemAtPosition(mySpinner.getSelectedItemPosition()) 基于Rich的描述.


Tiv*_*vie 5

取决于你希望"抓住"价值的点.

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

如果您更喜欢在用户执行最终任务时捕获值,例如单击"提交"按钮或其他内容,那么Rich提供的答案会更好.