Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取微调器的选定值?_Java_Android_Spinner - Fatal编程技术网

Java 如何获取微调器的选定值?

Java 如何获取微调器的选定值?,java,android,spinner,Java,Android,Spinner,我正在尝试从微调器中获取所选项目字符串。到目前为止,我已经做到了: bundle.putString(ListDbAdapter.DB_PRI, v.getText().toString()); 这不起作用,并且会出现类强制转换异常(我想我可以将视图强制转换为继承它的小部件。显然不是!),那么如何获取微调器的选定值呢?要获取微调器的选定值,您可以遵循以下步骤 创建实现AdapterView.OnItemSelectedListener的嵌套类。这将提供一个回调方法,当从微调器中选择项目时,该方

我正在尝试从
微调器中获取所选项目字符串。到目前为止,我已经做到了:

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

这不起作用,并且会出现类强制转换异常(我想我可以将
视图强制转换为继承它的小部件。显然不是!),那么如何获取
微调器的选定值呢?

要获取微调器的选定值,您可以遵循以下步骤

创建实现AdapterView.OnItemSelectedListener的嵌套类。这将提供一个回调方法,当从微调器中选择项目时,该方法将通知应用程序

在该类的“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.
    }
}

您已从微调器派生的AdapterView类中获取SelectedXXX方法:


取决于您希望“捕捉”值的点

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


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

mySpinner.getItemAtPosition(mySpinner.GetSelectEditPosition())
根据Rich的描述工作

只需使用以下命令:

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

这将为您提供
微调器中所选项目的
字符串

这是另一种方式:

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

        }
    });
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
内部位置,长arg3){
//TODO自动生成的方法存根
}
@凌驾
未选择公共无效(AdapterView arg0){
//TODO自动生成的方法存根
}
});

要仅获取微调器中的字符串值,请使用以下命令:

spinner.getSelectedItem().toString();
如果微调器值为
int
类型,则将其转换为
int

int valueinInt=(int)(spinner.getSelectedItem());

谢谢,这看起来很棒!“嵌套”是指在另一种方法中(如创建新视图)?不客气。嵌套类:或者,如果您以后只想从微调器读取值,可以避免所有这些代码,并执行
mySpinner.getSelectedItem().toString()
。但是如何在其他方法中使用此值呢?我对该解决方案进行了升级表决,因为如果目标仅仅是从微调器中获取所选值,那么可接受的答案似乎过多了。
字段。getSelectedItem()。toString()
是一个较短的等价物。
mySpinner.getSelectedItem()
是一个较短的等价物。然后追加
.toString()
,将其作为字符串获取。
Spinner spinner=(Spinner) findViewById(R.id.spinnername);
String valueinString = spinner.getSelectedItem().toString();
int valueinInt=(int)(spinner.getSelectedItem());