首页 > 解决方案 > 添加 Array[][] 到 ArrayList 替换和添加元素,而不是仅仅添加

问题描述

我正在为我的应用程序使用数组 [][] 的数组列表。问题是当我将第二个元素添加到 arraylist 时会替换第一个(它也添加到 arraylist,然后当添加下一个元素时,它会替换所有元素并添加,这会重复发生。

我不确定要添加什么代码,所以我会添加我认为有帮助的任何内容。

初始化数组列表:

 ArrayList<Bitmap[][]> levelTileList = new ArrayList <Bitmap[][]>();
ArrayList<Rect[][]> levelTileListRec= new ArrayList <Rect[][]>();
ArrayList<Bitmap[][]> levelFireList = new ArrayList <Bitmap[][]>();
ArrayList<Rect[][]> levelFireListRec = new ArrayList <Rect[][]>();

添加第一个元素:

 lvldesign.addLevel();

    levelTileList.add(lvldesign.getAllLevelTiles());
    levelTileListRec.add(lvldesign.getTempTileRect());
    //fire rect and bitmaps
    levelFireList.add(lvldesign.getAllLevelFire());
    levelFireListRec.add(lvldesign.getTempFireRect());

请注意,它调用另一个类来获取元素。它调用的类

 public Bitmap[][] getAllLevelTiles(){
    return tempTile;
}

public Rect[][] getTempTileRect(){
    return tempTileRect;
}

public Bitmap[][] getAllLevelFire(){ return tempFire; }

public Rect[][] getTempFireRect(){
    return tempFireRect;
}

添加后续元素:

 lvldesign.addLevel();

            levelTileList.add(lvldesign.getAllLevelTiles());

            levelTileListRec.add(lvldesign.getTempTileRect());

          //fire rect and bitmaps
            levelFireList.add(lvldesign.getAllLevelFire());

            levelFireListRec.add(lvldesign.getTempFireRect());

请注意,它调用的所有元素都是 Bitmap[][] 或 Rect[][]。

正如我已经说过的,最新添加的元素替换了所有早期元素并添加了一个元素。如果您想查看任何其他特定代码,请告诉我。

标签: javaandroid

解决方案


好吧,似乎每次添加到数组列表时都必须将其视为一个新变量。所以我将以下代码添加到我的添加级别(此代码在调用之前运行。)并且它有效。因此,如果您有同样的问题,只需确保每个元素都被视为一个新元素。

    tempTileRect = new Rect[mapHeight][mapWidth];
    tempFireRect = new Rect[mapHeight][mapWidth];
    tempTile = new Bitmap[mapHeight][mapWidth];
    tempFire = new Bitmap[mapHeight][mapWidth];

推荐阅读