Я использую ArrayAdapter
, чтобы заполнить элементы для перечисления в android.widget.Spinner
. Это прекрасно работает.
Но теперь я хочу, чтобы список элементов был динамическим, т.е. я хочу иметь возможность добавлять / удалять элементы из списка выбора во время выполнения. Однако, когда я вызываю adapter.add (элемент)
или adapter.remove (элемент)
, я всегда получаю UnsupportedOperationException
, даже несмотря на то, что Javadocs из ] Класс ArrayAdapter
описывает эти два метода как пригодные для использования именно для этой цели.
Это ошибка, действительно не реализованная или что я здесь упускаю?
Вот исходный код 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.
править: Итак, что сказал Марк ...
Вы, вероятно, инициализировали адаптер с помощью простого массива Java (например, String []
). Попробуйте использовать что-нибудь, реализующее интерфейс java.util.List
(например, ArrayList
).