有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android:使用双数组时如何识别按钮?

我有创建10x10按钮网格的代码:

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”变量作为参数添加到按钮。setOnClickListener(此)


共 (2) 个答案

  1. # 1 楼答案

    您可以利用anonymous classes并为每个按钮创建一个新的onClickListener

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

    我还没有编译它,所以我不知道是否有错误,但这应该给你一个大概的想法

  2. # 2 楼答案

    创建按钮后,可以通过setId()方法将按钮的id设置为i和j

    即按钮。setId(ij)

    然后在onClick()方法中,您可以使用该id检索正确的Vakje对象