Arraylist无法正常工作

时间:2016-05-08 12:03:11

标签: java android arraylist

我在Android Studio中有这段代码:

           for (ArrayList<Bitmap> arr : imgs) {
                for (Bitmap img : arr) {
                    if (img != null) {
                        arrayList.add(img.getHeight());
                    }
                    else {
                        arrayList.add(null);
                    }
                }
                heights.add(arrayList);
                arrayList.clear();
            }

先前声明并填充imgs,并将高度声明为

ArrayList<ArrayList<Integer>>

我得到的是:

[[58]]
[[null], [null]]
[[75], [75], [75]]
[[null], [null], [null], [null]]
[[1200], [1200], [1200], [1200], [1200]]
[[960], [960], [960], [960], [960], [960]]
[[960], [960], [960], [960], [960], [960], [960]]
[[612], [612], [612], [612], [612], [612], [612], [612]]
[[1632], [1632], [1632], [1632], [1632], [1632], [1632], [1632]]

等等。每次它没有将值添加到数组中,但它用新的值替换其中的所有值。怎么了?

1 个答案:

答案 0 :(得分:3)

heights.add(arrayList);
arrayList.clear();

您始终将相同的arrayList实例添加到heights,然后清除它,以便丢失所有以前的值。

您应该在外部循环的每次迭代中创建一个新的ArrayList实例。

       for (ArrayList<Bitmap> arr : imgs) {
            arrayList = new ArrayList<Integer> ();
            for (Bitmap img : arr) {
                if (img != null) {
                    arrayList.add(img.getHeight());
                }
                else {
                    arrayList.add(null);
                }
            }
            heights.add(arrayList);
       }