【发布时间】:2022-01-04 09:32:21
【问题描述】:
我的代码中有 3 个微调器,有相同的 4 个选项。但是,我希望当在某个微调器上选择一个选项时,相同的选择会从下一个中删除,这样没有微调器可以有相同的选择。
当一个项目已经在另一个微调器上被选中时,如何从微调器中删除它?
【问题讨论】:
我的代码中有 3 个微调器,有相同的 4 个选项。但是,我希望当在某个微调器上选择一个选项时,相同的选择会从下一个中删除,这样没有微调器可以有相同的选择。
当一个项目已经在另一个微调器上被选中时,如何从微调器中删除它?
【问题讨论】:
您可以创建一个List 选项,当用户选择一个Item 时,它会被添加到List,而Item 将从支持所有3 个微调器的另一个List 中删除。然后通知列表的更改。
List<String> choices = new ArrayList<>();
List<String> options = new ArrayList<>():
spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
choices.add(options.get(position));
options.remove(position);
adapter1.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
choices.add(options.get(position));
options.remove(position);
adapter2.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
spinner3.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
choices.add(options.get(position));
options.remove(position);
adapter3.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
【讨论】: