【发布时间】:2017-07-26 18:57:54
【问题描述】:
假设 vocSpinner value = "Combat/Service" 和 popSpinner value = "NSmen" 我检查 cb1。它会给出一个清单。但是,当我将 popSpinner 更改为“Regular/NSF”时,它会更改为另一个列表(这是正确的),但是如何在不创建另一个覆盖的数据的情况下取消选中该复选框。我提供的代码似乎不起作用,我无法解决。欢迎所有帮助,提前致谢!
imgur.com/a/1wt4N [应用截图]
private String[] vocSpinner;
private String[] popSpinner;
private List<Standard> standardList = new ArrayList<>();
private RecyclerView recyclerView;
private StandardsAdapter sAdapter;
private CheckBox cb1;
private CheckBox cb2;
cb1 = (CheckBox) getActivity().findViewById(R.id.pushUp);
cb2 = (CheckBox) getActivity().findViewById(R.id.sitUp);
this.vocSpinner = new String[]{
"CDO/Diver/Gds/Fitness Spec", "Combat/Service"
};
this.popSpinner = new String[]{
"NSmen", "Regular/NSF", "Pre-enlistee"
};
final Spinner v = (Spinner) getActivity().findViewById(R.id.spinner_Voc);
final Spinner p = (Spinner) getActivity().findViewById(R.id.spinner_PopGp);
ArrayAdapter<String> adapterV = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, vocSpinner);
v.setAdapter(adapterV);
ArrayAdapter<String> adapterP = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_spinner_item, popSpinner);
p.setAdapter(adapterP);
v.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
standardList.clear();
cb1.setEnabled(true);
cb2.setEnabled(true);
switch (position) {
case 0:
if (p.getSelectedItem().equals("NSmen")) {
cb1.setChecked(false);
cb2.setChecked(false);
addStandardToList("Gold - $500", ">89pts");
addStandardToList("Silver - $300", ">74pts");
addStandardToList("Incentive - $200", ">60pts");
addStandardToList("Pass", ">50pts");
sAdapter.notifyDataSetChanged();}
else if (p.getSelectedItem().equals("Regular/NSF")) {
cb1.setChecked(false);
cb2.setChecked(false);
addStandardToList("Gold - $300", ">89pts");
addStandardToList("Silver - $200", ">74pts");
addStandardToList("Incentive", "NA");
addStandardToList("Pass", ">60pts");
sAdapter.notifyDataSetChanged();
【问题讨论】:
-
那么您需要选择任何其他微调器值,默认情况下您的文本框应处于未选中状态?如果是的话,假设您的列表被复选框过滤,您的列表应该显示什么值。列表是否应该有复选框选中或未选中的值?
-
是的。该列表应显示未选中复选框的值。当我取消选中复选框时是否也可以这样做,它会返回到未选中的复选框值而不是显示选中的复选框值
-
所以在你的微调器的 onItemSelected 监听器中你已经完成了 cb1.setEnabled(true); cb2.setEnabled(true);在此之下,您还应该执行 cb1.setChecked(false); cb2.setChecked(false);
-
为这两个微调器 onItemSelect 方法做它
-
太好了,解决了!
标签: android checkbox android-recyclerview