设置微调器选择不起作用

时间:2012-06-06 18:01:54

标签: java android android-xml android-spinner

我正在尝试使用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);

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

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

感谢名单

2 个答案:

答案 0 :(得分:1)

尝试使用setSelection(int)代替setSelection(int, boolean)

答案 1 :(得分: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。