UnsupportedOperationException with ArrayAdapter.remove [重复]

Posted

技术标签:

【中文标题】UnsupportedOperationException with ArrayAdapter.remove [重复]【英文标题】:UnsupportedOperationException with ArrayAdapter.remove [duplicate] 【发布时间】:2011-11-04 05:54:56 【问题描述】:

在我的代码中,我有一个ListActivity。列表项的上下文菜单选项之一是“删除”,它会打开一个确认操作的对话框。我打算通过首先删除数据库中的项目数据然后将其从ArrayAdapter 中删除来实现此功能。将它从ArrayAdapter 中删除后,我得到了UnsupportedOperationException...

public void onClick(DialogInterface dialog, int id) 

    asynchronousDeleteEntry(CONTEXT_SELECTED_ID);
    dialog.dismiss();                          

    //I -know- that the adapter will always be an object
    //of ArrayAdapter<JournalEntry> because this is the only type
    //I ever call setListAdapter with.  Debugging confirms this
    @SuppressWarnings("unchecked")
    final ArrayAdapter<JournalEntry> adapter = (ArrayAdapter<JournalEntry>)
        journalViewerListActivity.this.getListAdapter();

    //EXCEPTION OCCURS HERE                                
    adapter.remove(adapter.getItem(CONTEXT_SELECTED_POSITION));

    //refreshes the ListView to show the new items
    adapter.notifyDataSetChanged();

任何帮助表示赞赏。 谢谢!

【问题讨论】:

【参考方案1】:

当您使用数组初始化 ArrayAdapter 时,似乎会出现此问题。尝试使用List&lt;JournalEntry&gt; 对其进行初始化。参考:Why can't one add/remove items from an ArrayAdapter?

【讨论】:

【参考方案2】:

您正在尝试修改声明为final 的列表。编译器试图警告您,但您已通过 @SuppressWarnings("unchecked") 抑制警告

【讨论】:

这不是“最终”的意思。它与 C++ 的“const”不同。

以上是关于UnsupportedOperationException with ArrayAdapter.remove [重复]的主要内容,如果未能解决你的问题,请参考以下文章