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日志。。