Принудительное закрытие, если я добавлю строку в массив строк - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть код как показано ниже

 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. Но моя проблема в том, что я должен динамически добавлять строку в этот массив и отображать.

Ответы [ 4 ]

4 голосов
/ 23 сентября 2011

Не использовать массив.Массив имеет фиксированную длину, и вы не можете добавлять в него новые элементы.Вместо этого используйте список:

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");
2 голосов
/ 23 сентября 2011

Вы не можете просто добавить другой элемент в массив.Когда вы объявляете ваш массив как

String[] myList = new String[] {"Hello","World","Foo","Bar"};

Ваш массив создается с четырьмя элементами в нем.Когда вы пытаетесь установить myList[4], вы, по сути, пытаетесь установить пятый элемент - и, очевидно, получаете ArrayIndexOutOfBoundsException.

Если вам нужно динамически добавлять элементы, вам лучше использовать ArrayList вместомассива.

1 голос
/ 23 сентября 2011

Вы пытаетесь добавить элемент на 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);
1 голос
/ 23 сентября 2011

Поскольку ваш массив содержит 4 элемента, myList[4] фактически находится за пределами. Максимальный индекс элемента будет myList[3]. Конечно, это проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...