2012-01-21 9 views
0

私は、ボタンの10x10のグリッドを作成するため、このコードを持っている:Android:二重配列の使用中にボタンを識別するにはどうすればよいですか?

for (int i=0; i<=9; i++) {           
     TableRow tr = new TableRow(this); 
     for (int j=0; j<=9; j++) {          
      Button button = new Button (this); 
      button.setHeight(30); 
      button.setWidth(30); 
      button.setOnClickListener(this); 
      button.setBackgroundDrawable(d); 
      tr.addView(button, 30,30); 

      if (bommaker[i][j]) { 
       isBomb = true; 
      } else { 
       isBomb = false; 
      } 

      veld[i][j] = new Vakje(isBomb); 

     } 
     layout.addView(tr); 
    } 

また、作成したボタンごとに新しい「Vakje」を追加します。 「Vakje」はもちろん、別のクラスです。

私の質問:どのボタンが押されたかを識別することができるので、onClick()メソッド内のクラス "Vakje"からメソッドを呼び出すことができます。 たとえば、パラメータとして "i"と "j"変数をbutton.setOnClickListener(this)に追加することはできません。

答えて

0

あなたはanonymous classesを利用し、各ボタン

for (int i=0; i<=9; i++) {           
    TableRow tr = new TableRow(this); 
    for (int j=0; j<=9; j++) {          
     Button button = new Button (this); 
     button.setHeight(30); 
     button.setWidth(30); 

     button.setBackgroundDrawable(d); 
     tr.addView(button, 30,30); 

     if (bommaker[i][j]) { 
      isBomb = true; 
     } else { 
      isBomb = false; 
     } 
     final Vakje vakjeObject = new Vakje(isBomb); 
     //veld[i][j] = new Vakje(isBomb); 
     button.setOnClickListener(new onClickListener() 
     { 
      public void onClick(View v) { 
      vakjeObject.yourMethod(); 
      } 
     }); 

    } 
    layout.addView(tr); 
} 

のための新しいonClickListenerを作成することができ、私はそうエラーがある場合、私は知りませんが、これはあなたの一般的なアイデアを与える必要があり、それをコンパイルしていません

0

ボタンを作成したら、setId()メソッドを使用してボタンのIDをiとjに設定できます。

I.e. button.setId(ij);

次に、onClick()メソッドでは、idを使用して正しいVakjeオブジェクトを取得できます。

+0

これは良いことですが、setId()は2つの整数を受け入れません。 – Mavix

+0

2つの整数を1つにまとめる。 2つを一緒にステッチするのが最善です。私。 iが1、jが2の場合、idは12になります。取得するオブジェクトを簡単に特定できます。あなたはonClick()メソッドでそれらを分ける必要があります。 –

+0

ありがとう!私はそれが今働いていると思う:) – Mavix

関連する問題