场景:我有 2 个带有一个适配器和全局数组的微调器。当任何人从一个微调器中选择一个项目时,该项目将从全局数组中删除。问题是当一个项目假设在从全局数组中删除该项目并在获取位置使用 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) {
}
});
最佳答案
每当您修改数组列表(如添加、删除或更新)时,您的数组适配器都应该得到通知。
因此请通知您的适配器。
希望对您有所帮助。
关于android - 微调器问题中的动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39888698/