名前を含むリストを作成しようとしています。このリストは変更可能です(追加、削除、ソートなど)。ただし、ArrayAdapterの項目を変更しようとすると、プログラムがクラッシュし、Java.lang.UnsupportedOperationException
エラー。ここに私のコードがあります:
ListView panel = (ListView) findViewById(R.id.panel);
String[] array = {"a","b","c","d","e","f","g"};
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_list_item_1, array);
adapter.setNotifyOnChange(true);
panel.setAdapter(adapter);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
adapter.insert("h", 7);
}
});
メソッドの挿入、削除、クリアを試みましたが、どれも機能しませんでした。誰かが私が間違ったことを教えてくれますか?
自分で試してみたが、うまくいかなかった。だから私は ArrayAdapter のソースコードをチェックアウトし、問題を見つけました。 ArrayAdapterは、配列によって初期化されると、配列を変更できないAbstractList(リスト)に変換します。
SolutionArrayAdapterの初期化中に配列を使用する代わりにArrayList<String>
を使用します。
String[] array = {"a","b","c","d","e","f","g"};
ArrayList<String> lst = new ArrayList<String>(Arrays.asList(array));
final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
Android.R.layout.simple_list_item_1, lst);
乾杯!