android - ArrayAdapterにアイテムを追加/削除できないのはなぜですか?



3 Answers

私はそれが遅れていることを知っていますが、簡単な説明は:Arrays.asList(T ... array)メソッドは、 ArrayListというカスタム内部クラスを返します。これは読み取り専用です。 すでに述べたように、完全なインプリメントを提供する必要があります。 例えばjava.util.ArrayList

android android-widget android-2.2-froyo

私は、 ArrayAdapter<CharSequence>を使用して、項目をandroid.widget.Spinnerにリストするために使用しています。 それはすべてうまく動作します。

しかし、今はアイテムのリストを動的に保ちたい、つまり、実行時に選択リストからアイテムを追加/削除できるようにしたい。 しかし、 ArrayAdapterクラスのJavadocは、これらの2つのメソッドを目的の目的に正確に使用できるとはArrayAdapterが、 ArrayAdapter adapter.add(item)またはadapter.remove(item)を呼び出すと、常にUnsupportedOperationExceptionArrayAdapterします。

これはバグですか、実際に実装されていないのですか?




私は同じ問題を抱えていた、私のデータはリソース文字列配列に保存されていたので、私はcreateFromResourceでArraAdapterを作成していました
リソース文字列ArrayからArrayAdapterを作成する次のコードは、この問題を解決しました。

Resources res = getResources();
String[] cities = res.getStringArray(R.array.cities_array);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter(
     this,
     android.R.layout.simple_spinner_item,
     new ArrayList(Arrays.asList(cities)));



ArrayListの代わりにArrayAdapterクラスでListを使用している可能性があります。

あなたの配列またはリストをArrayListに変換しようとする -

new ArrayList<ClassType>(Arrays.asList(array));



Related