Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作可变长度的对象数组?_Java_Android_Arrays - Fatal编程技术网

Java 如何制作可变长度的对象数组?

Java 如何制作可变长度的对象数组?,java,android,arrays,Java,Android,Arrays,我正在制作一个将在ListView中显示的对象的ArrayList。当我使用Object[]ObjectList=new Object[length]时,它希望在创建时整个数组都有一个精确的长度。我曾尝试将长度值设置为int变量,但当变量更改时,它似乎不会更新长度。我怎样才能做到这一点?我对Java有点陌生,所以感谢所有帮助我的人 使用集合框架的列表界面。例如,List data=new ArrayList()。如果需要,可以使用数据将其转换为数组。toArray()方法数组具有固定大小。一旦创

我正在制作一个将在ListView中显示的对象的ArrayList。当我使用
Object[]ObjectList=new Object[length]
时,它希望在创建时整个数组都有一个精确的长度。我曾尝试将长度值设置为int变量,但当变量更改时,它似乎不会更新长度。我怎样才能做到这一点?我对Java有点陌生,所以感谢所有帮助我的人

使用集合框架的
列表
界面。例如,
List data=new ArrayList()
。如果需要,可以使用
数据将其转换为数组。toArray()
方法数组具有固定大小。一旦创建了数组,就不能再更改其大小。您只能创建一个新数组并更改变量所持有的引用

换句话说,假设您从以下内容开始:

Object[] items = new Object[5];
后来你想:我需要更多的空间:

Object[] moreItems = new Object[15];
然后可以使用将第一个数组的内容复制到第二个数组中

记录在案:

  • 列表/数组列表不是数组
  • ArrayList
    使用上述方法为您实现“动态”增长的阵列体验

    • 我不会重复别人说得很好的话。

      关于您的实际问题,
      android.widget.ListView
      设计为使用数组类型填充。
      现在,如果用于填充
      列表视图
      的数据有一个大小变量并且可能经常更改,您可以选择使用一个
      数组列表
      包装在
      数组适配器

      onCreate()
      方法中,您可以创建适配器并将其设置为
      ListView

      List<String> list = new ArrayList<>();
      ...
      ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                       this, 
                       android.R.layout.listview,
                       arrayList);
      listView.setAdapter(arrayAdapter); 
      
      List List=new ArrayList();
      ...
      ArrayAdapter ArrayAdapter=新的ArrayAdapter(
      这
      android.R.layout.listview,
      arrayList);
      setAdapter(arrayAdapter);
      

      现在,您不再有固定大小数组的问题,因为您使用的
      ArrayList
      没有此限制。

      Object[length]
      不创建ArrayList,而是创建一个数组。使用
      新建ArrayList
      创建对象的ArrayList。可能与[ArrayList from array]重复。虽然我有点不确定…在使用toArray()方法时,如何指定数组的对象类型?数组的类型将根据列表项的类型推断。例如,list将生成一个
      字符串[]
      arrayI使用List List=new ArrayList拥有一个自定义对象(Obj)的ArrayList;当我拥有这个数组时,由Obj[]templast=List.toArray创建;它声称它需要Obj[],但找到了object[]。是的,ArrayList和ArrayAdapter就是答案。看看