ArrayAdapter.add()メソッドが機能していません。 ADTプラグインでEclipseHelios 3.6を使用していますが、TargetSourceはFroyo2.2エミュレーターと2.2HTC Evo4gです。これが私のJavaクラスです
import Android.app.Activity;
import Android.os.Bundle;
import Android.widget.ArrayAdapter;
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] entries = {"List Item A", "List Item B"};
ArrayAdapter<String> arrAdapt=new ArrayAdapter<String>(this, R.layout.list_item, entries);
arrAdapt.setNotifyOnChange(true);
arrAdapt.add("List Item C");
}
}
これがリストアイテム(list_item.xml)のレイアウトです
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent">
Android:padding="10dp"
Android:textSize="12sp"
</TextView>
LogCatにエラーが表示されます。
原因:Android.widget.ArrayAdapter.add(ArrayAdapter.Java)のJava.util.AbstractList.add(AbstractList.Java:432)のJava.util.AbstractList.add(AbstractList.Java:411)のJava.lang.UnsupportedOperationException :178)
学習中ですが、 source を正しく読んでいる場合、ArrayAdapterのコンストラクターは配列またはリスト内の各要素への参照をコピーしません。代わりに、渡されたリストを直接使用するか、配列の場合は asList() を使用して元の配列をリストとして扱います。 asList()によって返されるリストは、基になる配列の単なる表現であるため、配列で実行できなかったこと(サイズ変更など)は実行できません。
配列の代わりにArrayListのようなリストを渡してみてください。
ArrayList<String> entries =
new ArrayList<String>(Arrays.asList("List Item A", "List Item B"));
ArrayAdapter<String> arrAdapt=
new ArrayAdapter<String>(this, R.layout.list_item, entries);
arrAdapt.setNotifyOnChange(true);
arrAdapt.add("List Item C");