旋转器问题中的动态数组

时间:2016-10-06 06:09:42

标签: android arrays arraylist spinner android-spinner

场景:我有两个带有一个适配器和全局数组的微调器。当任何一个从一个微调器中选择一个项目时,那个项目将从全局数组中删除。问题是当一个项目从全局数组中删除该项目后再次选择0索引,而另一个项目在0索引的获取位置时。如果我将选择0索引更改项目,那么它将不会选择除所有项目之外的其他项目。

在这种情况下,任何人都可以解释或建议我想做什么。

     List<String> spinnerArray =  new ArrayList<String>();
HashMap<String, String> index_val = new HashMap<String, String>();
            ArrayAdapter<String> adapter_left;
            spinnerArray.add("None");
                spinnerArray.add("Task");
                spinnerArray.add("Priority");
                spinnerArray.add("Deadline");
                spinnerArray.add("Assigned to");
                spinnerArray.add("Created by");
                spinnerArray.add("Closed by");
                spinnerArray.add("Category");
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(activity, R.layout.spinner_selected_item, noneArray);
                adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);

                adapter_left = new ArrayAdapter<String>(activity, R.layout.spinner_selected_item_left, spinnerArray);

                adapter_left.setDropDownViewResource(R.layout.spinner_dropdown_item);
    task_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

                    if(!index_val.get("1").equalsIgnoreCase("None")){
                        spinnerArray.add(index_val.get("1"));
                    }
                    current_selected_val = adapterView.getItemAtPosition(i).toString();
                    index_val.put("1", current_selected_val);

                    if(!current_selected_val.equalsIgnoreCase("none")) {
                        spinnerArray.remove(spinnerArray.indexOf(current_selected_val));

                    }

                }

                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {

                }

            });

2 个答案:

答案 0 :(得分:2)

每次修改数组列表(如添加,删除或更新)时,都应通知您的数组适配器。

请通知您的适配器。

我希望这对你有所帮助。

答案 1 :(得分:0)

这是不可能的,因为微调器代表索引而不是实际项目来维护他们的项目。