我的代码如下
String[] myList = new String[] {"Hello","World","Foo","Bar"};
ListView lv = new ListView(this);
myList[4] = "hi";
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myList));
setContentView(lv);
应用程序强制关闭,在日志中我得到“java.lang.UnsupportedOperationException”如果我删除myList [4] =“hi”;代码我在myList数组中获取listview。但我的问题是我必须动态地将字符串添加到此数组并且必须显示。
答案 0 :(得分:4)
不要使用数组。数组具有固定长度,您无法向其添加新项目。改为使用列表:
List<String> myList = new ArrayList<String>();
myList.add("Hello");
myList.add("World");
myList.add("Foor");
myList.add("Bar");
ListView lv = new ListView(this);
myList.add("hi");
答案 1 :(得分:2)
您不能简单地向数组添加另一个元素。将数组声明为
时String[] myList = new String[] {"Hello","World","Foo","Bar"};
您的数组中包含四个元素。当您尝试设置myList[4]
时,您实际上是在尝试设置第五个元素 - 而且显然是ArrayIndexOutOfBoundsException
。
如果需要动态添加元素,最好使用ArrayList而不是数组。
答案 2 :(得分:1)
由于您的数组包含4个项目,myList[4]
实际上是超出范围的。最大元素索引为myList[3]
。当然这是问题所在。
答案 3 :(得分:1)
您正尝试在第5位添加元素。数组不会动态增长。为什么不尝试这样,
String[] myList = new String[] {"Hello","World","Foo","Bar"};
ArrayList<String> mList=new ArrayList<String>();
Collections.addAll(mList,myList);
ListView lv = new ListView(this);
mList.add("Hi");
lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,mList));
setContentView(lv);