Android 刷新列表视图';带remove方法的s ArrayAdapter引发UnsupportedOperationException

Android 刷新列表视图';带remove方法的s ArrayAdapter引发UnsupportedOperationException,android,adapter,android-arrayadapter,Android,Adapter,Android Arrayadapter,我想从列表视图中删除数据。在一个长新闻发布会上,我使用了以下代码: lstGame.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) { AlertD

我想从
列表视图中删除数据。在一个长新闻发布会上,我使用了以下代码:

      lstGame.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) {
            AlertDialog.Builder builder = new AlertDialog.Builder(FavouriteActivity.this);
            builder.setMessage("Remove from Favourite?").setCancelable(false)
                    .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            Const.favourite(FavouriteActivity.this, (args[arg2]));
                                Toast.makeText(FavouriteActivity.this, "Selected Item Removed from Favourite.", Toast.LENGTH_LONG).show();
                                // Here I get the UnsupportedException---->
                                // adapter.remove(args[arg2]);
                                lstGame.setAdapter(adapter);
                                lstGame.invalidate();

                        }
                    }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
            Dialog alert = builder.create();
            alert.show();
            return false;
        }
    });
lstGame.setOnItemLongClickListener(新的OnItemLongClickListener(){
@凌驾
公共布尔值长单击(AdapterView arg0、视图arg1、最终整数arg2、长arg3){
AlertDialog.Builder=新建AlertDialog.Builder(FavoriteActivity.this);
builder.setMessage(“从收藏夹中删除?”).setCancelable(false)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
常数favorite(favoriteActivity.this,(args[arg2]);
Toast.makeText(FavoriteActivity.this,“从收藏夹中删除所选项目”。,Toast.LENGTH_LONG.show();
//在这里,我得到了不受支持的dexception-->
//移除(args[arg2]);
lstGame.setAdapter(适配器);
lstGame.invalidate();
}
}).setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
Dialog alert=builder.create();
alert.show();
返回false;
}
});
为什么会出现这种异常?

如果适配器引用指向默认的
ArrayAdapter
实例,那么您很可能使用对象的
数组作为其数据源来实例化
ArrayAdapter
。如果是这种情况,那么在引擎盖下,
ArrayAdapter
会将该数组转换为一个特殊的
ArrayList
(而不是普通的java数组)。此特殊的
ArrayList
不会实现更改其大小的方法(因此使用
ArrayAdapter
上的
add
remove
(修改该列表)等方法将抛出
不支持操作异常
),它只允许您修改其中的值


如果要使用该
remove
方法,请将当前在
ArrayAdapter
中使用的
ArrayAdapter
数组中的数据放入
ArrayList
中,然后将该列表传递给
ArrayAdapter
构造函数。

请共享logcat日志。。