【问题标题】:Most efficient way of creating a List for an Android App为 Android 应用创建列表的最有效方法
【发布时间】:2016-07-04 15:29:30
【问题描述】:

在标题中,我正在尝试两种不同的方式在 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);

其中一个比另一个更好吗?也许它以某种方式提高了性能?如果这个列表会挤满数百个对象怎么办?

更新: 我尝试运行列表中包含许多对象的应用程序,使用第二种方法的性能似乎稍好一些。但我相信还有更好的!

【问题讨论】:

    标签: java android performance


    【解决方案1】:

    您的第二种方法在内存使用方面更好。要压缩代码,您可以执行以下操作。将用更少的代码提供相同的性能/可能还会提高一点性能,因为你没有用这个调用这么多的setter。

    ArrayList<Obj> objects = new ArrayList<>();
    
    Obj a=new Obj("smth", "Note: na, na, na", R.drawable.image1);
    objects.add(a);
    a=new Obj("smth", "Note: na, na, na", R.drawable.image2);
    objects.add(a);
    a=new Obj("smth", "Note: na, na, na", R.drawable.image3);
    objects.add(a);
    

    如果您对放入构造函数中的值有一个模式,您可以考虑循环并重新分配和添加。

    【讨论】:

      【解决方案2】:

      如果您想要一个干净漂亮的列表,请使用带有列表视图适配器的数组列表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-02-08
        • 2022-08-23
        • 1970-01-01
        • 2011-08-22
        • 2012-02-21
        • 1970-01-01
        相关资源
        最近更新 更多