Android LinearLayout如何访问矩阵中的单元格

Android LinearLayout如何访问矩阵中的单元格,android,matrix,android-linearlayout,Android,Matrix,Android Linearlayout,我正在开发一款Tic-Tac-Toe游戏,游戏大小是N*N而不是3*3,我正在使用ImageView来实现游戏板 作为一个开始,我试图实现一个矩阵板,在其中我将能够访问任何细胞,因为我添加了一个单人模式与人工智能 onCreate方法中在屏幕上构建电路板的代码如下: //defining the board and parameters main = new LinearLayout(this); main.setOrientation(LinearLayout.VERT

我正在开发一款Tic-Tac-Toe游戏,游戏大小是N*N而不是3*3,我正在使用ImageView来实现游戏板

作为一个开始,我试图实现一个矩阵板,在其中我将能够访问任何细胞,因为我添加了一个单人模式与人工智能

onCreate方法中在屏幕上构建电路板的代码如下:

    //defining the board and parameters
    main = new LinearLayout(this);
    main.setOrientation(LinearLayout.VERTICAL);
    LayoutParams params = new LayoutParams(
            LinearLayout.LayoutParams.WRAP_CONTENT,
            LinearLayout.LayoutParams.WRAP_CONTENT);
    main.setLayoutParams(params);
    //implementing the board
    for (int j = 0; j < k; j++) {
        row = new LinearLayout(this);
        row.setOrientation(LinearLayout.HORIZONTAL);
        row.setLayoutParams(params);
        for (int i = 0; i < k; i++) {
            //drawing empty spaces in the squares, player=1 is for the player and player=2 is for the AI
            player=0;
            MyImageView cell = new MyImageView(this,player); //code that draws on the board using MyImageView - a class that extends ImageView
            Board[j][i]=player;
            cell.setLayoutParams(new LayoutParams(width / k, width / k));
            cell.setOnClickListener(this);
            row.addView(cell);
        }
        main.addView(row);
    }
    setContentView(main);
//定义电路板和参数
main=新的线性布局(本);
主。设置方向(线性布局。垂直);
LayoutParams params=新的LayoutParams(
LinearLayout.LayoutParams.WRAP_内容,
LinearLayout.LayoutParams.WRAP_内容);
main.setLayoutParams(参数);
//执行董事会
对于(int j=0;j
k是电路板矩阵的顺序

现在,我的问题是我不知道如何通过MainActivity类访问某个单元格并在其中画一个圆圈,因为玩家是X,AI是圆圈


我只需要在实现电路板时得到帮助,这样我就可以访问电路板上的任何单元。

您需要一个坐标系和一种识别不同单元的方法。例如,每个单元格都可以获得这样的id

cell.setId(numCells++);
其中,numCells在第一个for循环之前设置为0

另一种方法是创建网格并将坐标存储在单元的标记中:

cell.setTag(tag)
标签在哪里 tag=String.valueOf(j)+“x”+String.valueOf(i)

或者,您可以将单元格的格式ID存储在阵列网格中,并根据网格中的位置访问正确的单元格

编辑:

您可以通过拨打以下电话访问特定销售:

cellToDrawIn = findViewById(AI-prefered cell ID);

如何获取ID或标签取决于AI如何计算圆圈的位置

记住,这是许多可能的解决方案之一


GridView是不可能的吗?

你能给我解释一下,如果我只有某个单元格的标签或号码,我如何访问它吗?我需要通过我定义的LinearLayout main访问它。另外,如何访问LinearLayout main中的某一行?您可以使用findViewById或FindViewByTag访问单元格。我编辑了我的答案。什么类型的可变单元格?如何通过LinearLayout变量main查找特定单元格?CellToDrawIn只是代码中与单元格类型相同的变量。使用cellToDrawIn=findViewById(id)或findViewbyTag(tag),可以得到一个变量cellToDrawIn,您可以修改该变量以更改该特定单元格的布局。
cellToDrawIn = findViewByTag(AI-prefered cell TAG);