我正在尝试使用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?
感谢名单
答案 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。