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

后端 未结 6 1583
旧时难觅i
旧时难觅i 2021-01-07 18:19

How do I change something like this:

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

to:

CharSequence cs[];

cs.add(\"foo\"); //          


        
相关标签:
6条回答
  • 2021-01-07 18:58

    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 讨论(0)
  • 2021-01-07 19:08

    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.

    0 讨论(0)
  • 2021-01-07 19:09

    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()]);
    
    0 讨论(0)
  • 2021-01-07 19:11

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

    0 讨论(0)
  • 2021-01-07 19:12

    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.

    0 讨论(0)
  • 2021-01-07 19:13

    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"; 
    
    0 讨论(0)
自定义标题
段落格式
字体
字号
代码语言
提交回复
热议问题