根据微调器项目选择更新 ArrayAdapter
Posted
技术标签:
【中文标题】根据微调器项目选择更新 ArrayAdapter【英文标题】:Update ArrayAdapter depending on spinner item selection 【发布时间】:2016-05-19 07:09:46 【问题描述】:我有一个活动,用户可以在微调器上选择一些产品类别。由于我有 14 个类别以避免ScrollView
开销,因此用户可以将微调器(最多 14 个)动态添加到ScrollView
。我的目标是避免选定项目中的重复项。例如:如果用户选择类别A
,则必须将其从ArrayAdapter
中删除且不可选择,如果用户决定将类别A
更改为B
,则A
必须再次可用。有什么可能的解决方案?
更新 我有以下想法
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
//Create temporary array list
ArrayList<String> tempArray = new ArrayList<>();
//Go trough all spinners and add selected items to temp array list
for(int i =1001; i<categorySpinnerId-1; i++)
tempArray.add(((Spinner)findViewById(i)).getSelectedItem().toString());
//Remove from original array list items of temp array list
categoryArrayList.removeAll(tempArray);
categorySpinnerAdapter.notifyDataSetChanged();
@Override
public void onNothingSelected(AdapterView<?> parent)
);
但在这种情况下,我收到了以下问题。例如,用户添加了 5 个微调器。第一个 spinners 有所有 14 个选项,第二个 13(不包括第一个选项),第三个 12(不包括第一个和第二个选项)等等。新创建的微调器选择不会影响以前的微调器选项列表。
【问题讨论】:
你为此做了什么。提供您的代码 sn-p.. 【参考方案1】:使用一个动态数组,您可以在其中存储所有微调器条目,而没有选定的条目。
例子:
完整数组:A, B, C, D, E
假设用户选择B
所以你做类似的事情
for (String a : originalArray)
if (!a.equals("B"))
tempArray.add(a);
然后将tempArray
设置为微调器视图适配器。
【讨论】:
【参考方案2】:使用 HashSet 它不会允许重复: `HashSet h=new HashSet(); h.add("a"); h.add("a"); h.add("b"); h.add("c");
System.out.println(" sdsadsd="+h); `
检查这个例子
link1
link2
【讨论】:
请附上示例链接以上是关于根据微调器项目选择更新 ArrayAdapter的主要内容,如果未能解决你的问题,请参考以下文章