Android двухмерный ArrayList пуст после его заполнения

1

У меня есть приложение OpenGL, где я заполняю двумерный int List с данными, я также регистрирую размер каждый раз, когда я помещаю в него данные. Он работает колоссально, есть 236 строк. Но после того, как я вызову метод позже в журнале, он возвращает мне, что размер равен 0. Вот как выглядит структуратор:

Main.java

...
onDrawFrame(GL10 gl) {
    if (first == true) {
        // the data comes from another method
        myList.setData(x, y); // I send the the data for the List
                          // and also log the List size, which at the end is 236
        first = false;
    }

    myList.check(); // It just Logs the List size, which gives back 0
}
...

List.java

private List<int[]> dataS = new ArrayList<int[]>();

public void setData(int x, int y) {
    dataS.add(new int[] { x, y });
    Log.i("size", "size: " + dataS.size());
}

public void check() {
    Log.i("check", "check: " + dataS.size());
}

Я просто не понимаю, в чем проблема, надеюсь, кто-то может мне помочь.

Весь код:

Main.java

public class Main extends GLSurfaceView implements Renderer {

public void drawGame(GL10 gl) {
    if (firstGameFrame == true) {
        tMap.setMap();
        firstGameFrame = false;
    }

    collision.check();
}   
}   

Map.java

public class Map {

public void setMap() {

    // map1 is an int map1[][] = {{1,0,1}, {1,1,1}, {0,0,1}}; - of course there are more data in it

    for (int z = 0; z < map1.length; z++) {
            for (int x = 0; x < map1[z].length; x++) {
                if (map1[z][x] == 1) {
                    collision.getWall((x*2) - 23, (z * 2) - 27);
                }
            }
        }
}
}

Collision.java

public class Collision {

private List<Integer[]> wallCoord = new ArrayList<Integer[]>();

public void getWall(int x, int y) {
    wallCoord.add(new Integer[] { x, y });
    Log.i("getwall", "getwall " + x + " " + y + " size " + wallCoord.size());       
}

public void check() {
    Log.i("coords", "size: " + wallCoord.size());
}
}
  • 0
    Смотри мой ответ ..
  • 0
    Вы пробовали Main.collision.getWall ((x * 2) - 23, (z * 2) - 27);? в классе Map.java ..
Показать ещё 1 комментарий
Теги:
arraylist

1 ответ

1
Лучший ответ

Хорошо, без вашего кода я могу просто помочь, просто объявите

private List<int[]> dataS = new ArrayList<int[]>();

как глобально,

а затем использовать dataS через свой класс.. и убедитесь, что вы никогда не инициализировали dataS снова нигде.

Я думаю, что вы используете другой объект класса столкновения в файле Map.java и Main.java. Вы устанавливаете значение с помощью объекта столкновения из класса Map.java и проверяете его размер с помощью основного класса столкновений. (Если не ошибаюсь).

  • 0
    То же самое, когда я заполняю его, размер возвращается со значением 236, но при проверке это 0.
  • 1
    Для этого вы должны поставить весь код ..
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню