ArrayAdapter.add()方法对我不起作用。我使用的是带有ADT插件的Eclipse Helios 3.6,Target Source是一个Froyo 2.2模拟器和2.2 HTC Evo 4g。下面是我的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,上面写着
起因: java.util.AbstractList.add(AbstractList.java:432) at android.widget.ArrayAdapter.add(ArrayAdapter.java:178)
的java.util.AbstractList.add(AbstractList.java:411) at java.lang.UnsupportedOperationException
发布于 2011-02-26 14:18:51
我只是在学习,但是如果我正确地读取了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");
https://stackoverflow.com/questions/5125350
复制相似问题