如果我将字符串添加到字符串数组,则强制关闭

时间:2011-09-23 08:55:22

标签: android android-layout android-listview

我的代码如下

 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。但我的问题是我必须动态地将字符串添加到此数组并且必须显示。

4 个答案:

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