Почему нельзя добавить / удалить элементы из ArrayAdapter?

Я использую ArrayAdapter , чтобы заполнить элементы для перечисления в android.widget.Spinner . Это прекрасно работает.

Но теперь я хочу, чтобы список элементов был динамическим, т.е. я хочу иметь возможность добавлять / удалять элементы из списка выбора во время выполнения. Однако, когда я вызываю adapter.add (элемент) или adapter.remove (элемент) , я всегда получаю UnsupportedOperationException , даже несмотря на то, что Javadocs из ] Класс ArrayAdapter описывает эти два метода как пригодные для использования именно для этой цели.

Это ошибка, действительно не реализованная или что я здесь упускаю?

57
задан Macarse 13 August 2010 в 14:17
поделиться

2 ответа

Вот исходный код ArrayAdapter # remove :

public void remove(T object) {
    if (mOriginalValues != null) {
        synchronized (mLock) {
            mOriginalValues.remove(object);
        }
    } else {
        mObjects.remove(object);
    }
    if (mNotifyOnChange) notifyDataSetChanged();
}

Единственное, что может вызвать исключение UnsupportedOperationException , это строка в else- блокировать. Проблема в том, что используемый вами список не поддерживает удаление элементов. Я предполагаю, что вы используете массив. Например, попробуйте ArrayList.

править: Итак, что сказал Марк ...

16
ответ дан 24 November 2019 в 19:15
поделиться

Вы, вероятно, инициализировали адаптер с помощью простого массива Java (например, String [] ). Попробуйте использовать что-нибудь, реализующее интерфейс java.util.List (например, ArrayList ).

119
ответ дан 24 November 2019 в 19:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: