从微调器中删除所选项目

时间:2018-03-20 08:34:55

标签: android android-spinner

我是新手我想从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

任何人都帮助我克服这个问题

3 个答案:

答案 0 :(得分:0)

您的数据是不可变的(R.array.slot)

所以你可以修改它

您需要在List<String>中存储数据,并将其传递给ArrayAdapter。现在,您可以通过修改List<String>

来修改数据

答案 1 :(得分:0)

当您在ArrayAdapter类中传递数组时,它会将数组转换为AbstractList。这是List接口的一个实现,其中元素不能被添加或删除,即不可变。你应该做的是通过将数组转换为列表来传入ArrayListArrays.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) {

        }
    });