Android, как динамически заполнять массив CharSequence (не инициализировать?) - PullRequest
21 голосов
/ 15 августа 2011

Как мне изменить что-то вроде этого:

CharSequence cs[] = { "foo", "bar" };

на:

CharSequence cs[];

cs.add("foo"); // this is wrong...
cs.add("bar"); // this is wrong...

Ответы [ 5 ]

84 голосов
/ 15 августа 2011

Используйте объект List для управления элементами, а когда у вас есть все элементы, затем преобразуйте в CharSequence.Как то так:

List<String> listItems = new ArrayList<String>();

listItems.add("Item1");
listItems.add("Item2");
listItems.add("Item3");

final CharSequence[] charSequenceItems = listItems.toArray(new CharSequence[listItems.size()]);
3 голосов
/ 15 августа 2011

Вы почти у цели.Вам необходимо выделить место для записей, что автоматически делается для вас в случае инициализации, указанном выше.

CharSequence cs[];

cs = new String[2];

cs[0] = "foo"; 
cs[1] = "bar"; 

На самом деле CharSequence является интерфейсом и, таким образом, не может быть непосредственно создан, но String является одной из его реализаций.может.

2 голосов
/ 15 августа 2011

Вы также можете использовать List, чтобы иметь динамическое число членов в массиве (list:)):

List<CharSequence>  cs = new ArrayList<CharSequence>();

cs.add("foo"); 
cs.add("bar"); 

Если вы хотите использовать массив, вы можете сделать:

CharSequence cs[];

cs = new String[2];

cs[0] = "foo"; 
cs[1] = "bar"; 
0 голосов
/ 15 августа 2011

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

0 голосов
/ 15 августа 2011

Если вы хотите, чтобы оно было динамичным, вам следует подумать о другой структуре, а затем преобразовать ее в CharSequence, когда вам это нужно. В качестве альтернативы этот поток может быть полезен.

...