我有以下代码:
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()
。任何提示如何解决问题?
答案 0 :(得分:2)
我必须查看API文档,但可能DataBaseConnector.getChaptersFromBook(book.getID())
调用返回一个不可变列表,因此您无法修改它。看来你必须制作一份本地副本。
答案 1 :(得分:0)
根据Android docs(以及List接口的JavaDocs):
“如果不支持从此列表中删除,则抛出UnsupportedOperationException。”
我的猜测是正在使用的实现不支持clear()方法。