开发者

Android, how to populate a CharSequence array dynamically (not initializing?)

How do I change something like this:

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

to:

CharSequence cs[];

cs.add("foo"); // this is wrong...
cs.add("bar"); // thi开发者_运维问答s is wrong...


Use a List object to manage items and when you have all the elements then convert to a CharSequence. Something like this:

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

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

final CharSequence[] charSequenceItems = listItems.toArray(new CharSequence[listItems.size()]);


You are almost there. You need to allocate space for the entries, which is automatically done for you in the initializing case above.

CharSequence cs[];

cs = new String[2];

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

Actually CharSequence is an Interface and can thus not directly be created, but String as one of its implementations can.


You can also use List, to have a dynamic number of members in the array(list :)):

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

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

If you want to use array, you can do:

CharSequence cs[];

cs = new String[2];

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


If you want it to be dynamical, you should think in an another structure and then convert it to a CharSequence when you need. Alternatively, that thread can be useful.


You could use ArrayList instead of raw arrays since need to add items dynamically.


KOTLIN

First, convert the ArrayList to a regular, mutable list. Then, manually create the Array using the Array constructor. Make sure that your init function generates a data type that fits the Array (ex. don't put an int in a CharSequence arrray).

val exampleArray: ArrayList<String> arrayListOf("test1", "test2", "test3")
val exampleList = exampleArray.toList()
val exampleItems: Array<CharSequence?>? = exampleList?.size?.let { it1 -> Array(it1,{ i -> exampleArray?.get(i) }) }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜