0

からデータを削除したいListView。そのために、長押しイベントで次のコードを使用しました。

      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;
        }
    });

なぜその例外が発生するのですか?

4

1 に答える 1

1

アダプタ参照がデフォルトのインスタンスを指している場合は、データのソースとしてofオブジェクトを使用してArrayAdapterインスタンス化する可能性があります。この場合、内部で、はその配列を特殊な配列(通常のJava配列ではない)に変換します。このスペシャルは、サイズを変更するメソッドを実装していません(したがって、または(そのリストを変更する)のようなメソッドを使用すると、がスローされます)、その中の値のみを変更できます。ArrayAdapterarrayArrayAdapterArrayListArrayListaddremoveArrayAdapterUnsupportedOperationException

そのメソッドを使用する場合は、現在使用しているからremoveのデータをに入れてから、そのリストをコンストラクターに渡します。arrayArrayAdapterArrayListArrayAdapter

于 2012-11-11T09:30:04.197 に答える