2011-12-05 12 views
1

私はOpenGLアプリケーションを持っています。ここではデータを2次元のintリストに埋め込み、データを入れるたびにサイズを記録します。それは火格子で動作し、236行あります。私は後でログのメソッドを呼び出した後、しかし、それはサイズがここで0 であることを私に戻っていますstructurがどのように見えるかです:Androidの2次元ArrayListが空になった後に

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

+0

私の答えを見てください。 – user370305

+0

Main.collision.getWall((x * 2) - 23、(z * 2) - 27); Map.javaクラスで.. – user370305

+0

私のコメントはあなたの答えの下にあります、もう一度ありがとう;) – matthew3r

答えて

1
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()); 
} 
} 

[OK]を、W ithoutあなたのコードは、私はちょうど、ちょうどグローバルとして

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

を宣言し、これを助けることができる

、次に出て自分のクラスを介して件のデータを使用し...と初期化されていないDATASあなたを確認してください再びどこでも。

Map.javaとMain.javaファイルで異なるcollisionクラスオブジェクトを使用していると思います。Map.javaクラスのcollisionオブジェクトを使用して値を設定し、Mainの衝突クラスでサイズをチェックします(間違っていない場合)。

+0

同じ、私はそれをサイズ236の値で戻ってきますが、それを確認して0に戻ってきます。 – matthew3r

+1

全体のコードを置くために。 – user370305

+0

さて、ちょっと、私はちょうどそこに必要でないものを切り捨てます。 – matthew3r

関連する問題