微调器问题中的动态数组
Dynamic array in spinner issue
场景:我有 2 个微调器,带有一个适配器和全局数组。当任何一个 select 来自一个微调器的项目然后该项目将从全局删除 array.Problem 是当一个项目假设 select 在从全局数组中删除该项目和另一个项目后再次使用 0 索引获取索引为 0 的位置。如果我将 select 那个 0 索引更改的项目那么它不会 select 除了所有项目都会 select。
那么谁能解释或建议我在这种情况下想做什么。
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 个微调器,带有一个适配器和全局数组。当任何一个 select 来自一个微调器的项目然后该项目将从全局删除 array.Problem 是当一个项目假设 select 在从全局数组中删除该项目和另一个项目后再次使用 0 索引获取索引为 0 的位置。如果我将 select 那个 0 索引更改的项目那么它不会 select 除了所有项目都会 select。
那么谁能解释或建议我在这种情况下想做什么。
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) {
}
});
每当您修改数组列表(如添加、删除或更新)时,您的数组适配器都应该得到通知。
所以请通知您的适配器。
希望对您有所帮助。
这是不可能的,因为微调器代表索引而不是实际项目维护它们的项目。