受到UnsupportedOperationException的影响

时间:2011-05-11 13:07:12

标签: 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()。任何提示如何解决问题?

2 个答案:

答案 0 :(得分:2)

我必须查看API文档,但可能DataBaseConnector.getChaptersFromBook(book.getID())调用返回一个不可变列表,因此您无法修改它。看来你必须制作一份本地副本。

答案 1 :(得分:0)

根据Android docs(以及List接口的JavaDocs):

“如果不支持从此列表中删除,则抛出UnsupportedOperationException。”

我的猜测是正在使用的实现不支持clear()方法。