问题描述
我对如何根据选定的单选按钮确定微调器的数组感到困惑。
所以我有 1 个微调器和 1 个 RadioButtonGroup 包含 2 个 RadioButton。我的情况就像:
<string-array name="spinner_item_a">
<item>plant 1</item>
<item>plant 2</item>
<item>plant 3</item>
</string-array>
<string-array name="spinner_item_b">
<item>fruit 1</item>
<item>fruit 2</item>
<item>fruit 3</item>
</string-array>
我使用 SharedPreferences 传递 RadioButton 的值,以便微调器可以获取该值。这是我选择的 RadioButton 的代码:
onSelectedChapterChange = new RadioGroup.OnCheckedchangelistener() {
@Override
public void onCheckedChanged(RadioGroup group,int checkedId) {
chapters = group.getCheckedRadioButtonId() == R.id.chapter_1_radio_button ? plant : fruit;
if (chapters.equals(plant))
setPrefType = "Plant";
if (nationality.equals(fruit))
setPrefType = "Fruit";
SharedPreferences.Editor sPref = context.getSharedPreferences("ChapterTypePref",Context.MODE_PRIVATE).edit();
sPref.putString("ChapterInfo",setPrefType);
sPref.apply();
}
};
这是我的微调监听器:
chapterSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id)
{
if (position > 0) {
chapterType = chapterItemValueList.get(position-1);
}
}
@Override
public void onnothingSelected(AdapterView<?> parent) {
}
};
这是我将项目列表设置到适配器中的方法:
private void initChapterSpinner(final Context context,Resources resources) {
SharedPreferences pref = context.getSharedPreferences("ChapterTypePref",Context.MODE_PRIVATE);
String chapterPref = pref.getString("ChapterInfo","");
if (chapterPref == "Plant"){
chapterItemValueList = new ArrayList<>(Arrays.asList(
resources.getStringArray(R.array.spinner_item_a)));
} else if (chapterPref == "Fruit"){
chapterItemValueList = new ArrayList<>(Arrays.asList(
resources.getStringArray(R.array.spinner_item_b)));
}
idTypeArrayAdapter = new IdTypeSpinnerAdapter(context,idTypeItemValueList);
idTypeArrayAdapter.setDropDownViewResource(R.layout.spinner_dropdown_cdd);
}
事实证明,微调适配器的列表项变为空。我已经了解了应该如何运行流程的逻辑,但它只是在实现它时令人困惑。请帮助我,谢谢:D
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)