简体   繁体   中英

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"); // this 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"; 

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) }) }

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM