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