问题
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...
回答1:
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()]);
回答2:
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.
回答3:
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";
回答4:
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.
回答5:
You could use ArrayList instead of raw arrays since need to add items dynamically.
来源:https://stackoverflow.com/questions/7063831/android-how-to-populate-a-charsequence-array-dynamically-not-initializing