我正在制作一个将在ListView中显示的对象的ArrayList。当我使用Object[] ObjectList = new Object[length]
时,它在创建时期望整个数组的精确长度。我已经尝试将长度值设为int变量,但是当变量更改时,它似乎不会更新长度。我怎么能做到这一点?我是Java的新手,所以感谢任何帮助过的人!
答案 0 :(得分:3)
使用Collections框架的List
接口。例如。 List<String> data = new ArrayList<>()
。如果需要data.toArray()
方法
答案 1 :(得分:2)
数组具有固定大小。创建数组后,不能再更改大小。您只能创建一个新数组并更改变量所持有的引用!
换句话说 - 假设你从:
开始Object[] items = new Object[5];
后来你想:我需要更多空间:
Object[] moreItems = new Object[15];
然后您可以使用System.arraycopy()将第一个数组的内容复制到第二个数组中。
记录:
ArrayList
使用上面介绍的approch为您实现“动态”增长的阵列体验答案 2 :(得分:2)
我不会重复别人说得很好的话。
关于您的实际问题,android.widget.ListView
旨在填充数组类型
现在,如果用于填充ListView
的数据具有大小变量并且可能经常更改,您可以选择使用ArrayList
中包含的ArrayAdapter
。
在onCreate()
方法中,您可以创建适配器并将其设置为ListView
:
List<String> list = new ArrayList<>();
...
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
android.R.layout.listview,
arrayList);
listView.setAdapter(arrayAdapter);
现在,当您使用没有此限制的ArrayList
时,您不再遇到固定大小数组的问题。