Android 如何通过循环设置多个onClick()?

Android 如何通过循环设置多个onClick()?,android,button,Android,Button,最近,我一直在做一个简单的桌面游戏android应用程序。这个游戏在7x7网格上进行,我为所有的方块制作了按钮 这不是我第一次这样做,不仅制作布局,而且为每个按钮编写onClick()都是一项艰巨的工作。多亏了矩阵数组(int state[7][7]和按钮板[]][]=新按钮[7][7]),我可以将所有49个代码塞进一个函数中,但写起来很简单 board[0][0]=(Button)findViewById(R.id.board00); board[0][1]=(Button)findViewB

最近,我一直在做一个简单的桌面游戏android应用程序。这个游戏在7x7网格上进行,我为所有的方块制作了按钮

这不是我第一次这样做,不仅制作布局,而且为每个按钮编写
onClick()
都是一项艰巨的工作。多亏了矩阵数组(
int state[7][7]
按钮板[]][]=新按钮[7][7]
),我可以将所有49个代码塞进一个函数中,但写起来很简单

board[0][0]=(Button)findViewById(R.id.board00);
board[0][1]=(Button)findViewById(R.id.board01);
int i;
for(i=0;i<2;i++){
  board[0][i].setOnClickListener(new OnClickListener() {
    public void onClick(View v){
      my_function(0,i);
  }
}
board[0][0]=(按钮)findviewbyd(R.id.board00);
板[0][1]=(按钮)findViewById(R.id.board01);
int i;

对于(i=0;i不要使用匿名类。创建一个完整的类。然后它可以有一个构造函数,您可以调用并传入参数。例如

private static class MyButtonListener implements OnClickListener {
    int i;
    int j;
    public MyButtonListener(int i, int j) {
        this.i = i;
        this.j = j;
    }
    public void onClick(View v){
      my_function(i, j);
    }
}

然后在循环中,创建一个新的MyButtonListener(i,j)
,而不是一个匿名类。

如果您想保留匿名类,那么这应该是可行的

for (int i = 0; i < 7; i++) {
  for (int j = 0; j < 7; j++){
  final int ii = i;
  final int jj = j;
  board[j][i].setOnClickListener(new OnClickListener() {
    public void onClick(View v){
      my_function(ii, jj);
  }
}
for(int i=0;i<7;i++){
对于(int j=0;j<7;j++){
最终int ii=i;
最终int jj=j;
板[j][i].setOnClickListener(新的OnClickListener(){
公共void onClick(视图v){
my_函数(ii,jj);
}
}

我想我没有太多理解。你能写一段关于创建新的MyButtonListener(I,j)的简短代码吗?