【问题标题】:Android, how to populate a CharSequence array dynamically (not initializing?)Android,如何动态填充 CharSequence 数组(不初始化?)
【发布时间】:2011-10-27 04:32:26
【问题描述】:

我该如何改变这样的事情:

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

到:

CharSequence cs[];

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

【问题讨论】:

    标签: java arrays dynamic charsequence


    【解决方案1】:

    如果您希望它是动态的,您应该考虑另一种结构,然后在需要时将其转换为 CharSequence。或者,that thread 也很有用。

    【讨论】:

      【解决方案2】:

      你快到了。您需要为条目分配空间,这在上面的初始化案例中会自动为您完成。

      CharSequence cs[];
      
      cs = new String[2];
      
      cs[0] = "foo"; 
      cs[1] = "bar"; 
      

      实际上 CharSequence 是一个接口,因此不能直接创建,但 String 作为其实现之一可以。

      【讨论】:

      • 这不会编译,数组没有add 方法。
      • 对不起,但是,在“cs.add(...)”上,我得到:“无法在数组类型 CharSequence[] 上调用 add(String)”...
      【解决方案3】:

      您也可以使用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"; 
      

      【讨论】:

        【解决方案4】:

        您可以使用 ArrayList 代替原始数组,因为需要动态添加项目。

        【讨论】:

          【解决方案5】:

          使用 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()]);
          

          【讨论】:

          • 应该是 listItems.add("Item1");
          【解决方案6】:

          科特林

          首先,将 ArrayList 转换为常规的可变列表。 然后,使用Array constructor 手动创建阵列。确保您的 init 函数生成适合 Array 的数据类型(例如,不要将 int 放入 CharSequence 数组中)。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-01-18
            • 1970-01-01
            • 1970-01-01
            • 2011-08-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多