截至标题中,我正在尝试两种不同的方法在android中创建ArrayListView
。
第一个看起来像这样:
list.add(new Obj("smth", "Note: na, na, na", image[0]));
list.add(new Obj("smth", "Note: na, na, na", image[1]));
list.add(new Obj("smth", "Note: na, na, na", image[2]));
并且有一个图像支持数组:
private int[] images = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
...}
另一种方式使用Obj.class的getter和setter方法。像这样:
ArrayList<Obj> objects = new ArrayList<>();
Obj a=new Obj();
a.setName("smth");
a.setNote("na,na,na");
a.setImage(R.drawable.image1);
objects.add(a);
a=new Obj();
a.setName("smth");
a.setNote("na, na, na");
a.setImage(R.drawable.image2);
objects.add(a);
a=new Obj();
a.setName("smth");
a.setNote("na,na,na");
a.setImage(R.drawable.image3);
objects.add(a);
其中一个比另一个好吗?也许它以某种方式提高了性能?如果这个列表中会挤满数百个对象怎么办?
更新 我试图在列表中运行带有许多对象的应用程序,使用第二种方法的性能似乎稍好一些。但我相信还有更好的!
答案 0 :(得分:2)
你的第二种方法在内存使用方面更好。要压缩代码,您可以执行以下操作。使用较少量的代码可以提供相同的性能/可能还会增加一点性能,因为你没有用这个调用这么多的setter。
hashcode()
如果你对构造函数中的值有一个模式,你可以考虑循环并重新分配和添加。
答案 1 :(得分:-1)
如果你想要一个干净的好名单,请使用带有listview适配器的数组列表。