99

I'm trying to make a list containing names. This list should be modifiable (add, delete, sort, etc). However, whenever I tried to change the items in the ArrayAdapter, the program crashed, with java.lang.UnsupportedOperationException error. Here is my code:

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

I tried insert, remove and clear methods, and none of them worked. Would someone tell me what I did wrong?

4

1 に答える 1

293

私はそれを自分で試しました...それがうまくいかなかったことがわかりました。そこで、 ArrayAdapterのソースコードを調べて、問題を見つけました。ArrayAdapterは、配列によって初期化されると、配列を変更できないAbstractList(リスト)に変換します。

解決策ArrayList<String>ArrayAdapterの初期化中に 、代わりに配列を使用してください。

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

乾杯!

于 2010-07-08T04:15:27.797 に答える