我是新手我想从spinner
删除所选项目,并将新项目添加到spinner
。我该怎么做。我正在尝试的是
adapter = ArrayAdapter.createFromResource(this,R.array.slot , android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
slotTime.setAdapter(adapter);
slotTime.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
selectedTime = adapterView.getSelectedItem().toString();
adapter.remove((String) slotTime.getSelectedItem());
adapter.notifyDataSetChanged();
}
我得到了这样的错误......
java.lang.UnsupportedOperationException
任何人都帮助我克服这个问题
答案 0 :(得分:0)
您的数据是不可变的(R.array.slot)
所以你可以修改它
您需要在List<String>
中存储数据,并将其传递给ArrayAdapter
。现在,您可以通过修改List<String>
答案 1 :(得分:0)
当您在ArrayAdapter
类中传递数组时,它会将数组转换为AbstractList
。这是List
接口的一个实现,其中元素不能被添加或删除,即不可变。你应该做的是通过将数组转换为列表来传入ArrayList
。 Arrays.asList
方法应该可以解决问题。
答案 2 :(得分:0)
使用下面的代码删除微调器值并通知。 这里的字符串为List。
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
strings.remove(arrstrings.indexOf(spinner.getSelectedItem()));
// spinner.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});