2

我正在尝试使用 setSelection 设置微调器,以显示特定选项,如下所示:

Spinner gender;
gender = (Spinner) findViewById(R.id.spinner_edit_gender);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.gender_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    gender.setAdapter(adapter);
    if (strGender.equals("male"))
        gender.setSelection(0,true);
    else
        gender.setSelection(1,true);

它总是设置微调器的第一个选项而不是我想要的

任何人都知道为什么并且可以帮助我吗?

谢谢

4

2 回答 2

1

有两件事要尝试:

1.) 我将在这里暗中尝试,并建议您尝试在其 XML 中定义微调器的选项。这就是我在我setSelection()成功使用的应用程序之一中的内容。

<Spinner android:id="@+id/spinner_edit_gender"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"                
    android:prompt="@string/genders"
    android:entries="@array/gender_array"/>

然后你的代码变成:

Spinner gender = (Spinner) findViewById(R.id.spinner_edit_gender);
if (strGender.equalsIgnoreCase("male"))
    gender.setSelection(0,true);
else
    gender.setSelection(1,true);

或者如果我们想变得更漂亮:

Spinner gender = (Spinner) findViewById(R.id.spinner_edit_gender);
(strGender.equalsIgnoreCase("male")) ? gender.setSelection(0,true) : gender.setSelection(1,true);

我更改equals()equalsIgnoreCase()因为您的数组中的值与示例中代码中的值的大小写不匹配(“男性”与“男性”)。

2.) 当我输入第一部分时,我注意到您的 ArrayAdapter 的类型是CharSequence. 尝试将其更改为String然后测试您的原始代码。但是,根据您的需要,您可能需要考虑在 XML 中定义选项,因为至少在我看来,与处理 ArrayAdapters 相比,它是为微调器定义选项的一种更简洁、更简单的方法。

于 2012-06-06T18:44:35.840 回答
1

尝试使用setSelection(int)而不是setSelection(int, boolean).

于 2012-06-06T18:09:20.463 回答