#android
#Android
Вопрос:
У меня есть следующий код:
private static ArrayAdapter<String> adapter;
private static List<Chapter> chapters;
public void update(Book book) {
adapter.clear();
if (chapters != null) {
chapters.clear();
}
chapters = DataBaseConnector.getChaptersFromBook(book.getID());
for (Chapter chapter : chapters) {
adapter.add(chapter.getTitle());
}
header.setText(book.getAbbreviation());
subHeader.setText(book.getName() " (" book.getNumber() ")");
subHeader.setVisibility(View.VISIBLE);
}
Если я вызываю метод, update(Book book)
а переменной chapters
нет null
, я получаю сообщение об ошибке UnsupportedOperationException
в строке chapters.clear()
. Есть какие-либо подсказки, как решить проблему?
Комментарии:
1. Я полагаю, что вам могло бы сойти с рук отсутствие необходимости «очищать» ваш список, поскольку вы просто переназначаете его в самой следующей строке.
Ответ №1:
Мне пришлось бы взглянуть на документацию API, но, по-видимому, DataBaseConnector.getChaptersFromBook(book.getID())
вызов возвращает неизменяемый список, поэтому вы не можете его изменить. Похоже, вам придется создать локальную копию.
Комментарии:
1. Как я могу проверить, возвращает ли метод неизменяемый список? Я написал этот метод самостоятельно.
2. Какой конкретный тип вы используете для создания этого списка?
3. @nicholas. hauschild java.util.List
4. Когда вы используете оператор ‘new’, какой тип он фактически создает?
5. @nicholas. хаушильд Ах, хорошо, я вижу, список создается с использованием Arrays.asList
Ответ №2:
Согласно документам Android (а также JavaDocs для интерфейса List):
«Выдает исключение UnsupportedOperationException, если удаление из этого списка не поддерживается».
Я предполагаю, что используемая реализация не поддерживает метод clear ().