【问题标题】:Setting Image Button via it's id into a 8x8 2d array. Android. Xamarin通过它的 id 将图像按钮设置为 8x8 2d 数组。安卓。赛马林
【发布时间】:2017-11-13 18:15:58
【问题描述】:

我分别制作了一个大小为 8 和 8 的二维数组,我制作了 64 个图像按钮,每个按钮都有一个 b1、b2 b3 id。我很想将 id 设置到数组中。

一个例子是:

按钮[0, 0] = FindViewById(Resource.Id.b1);

按钮[0, 1] = FindViewById(Resource.Id.b2);
.

.

.

按钮[1, 0] = FindViewById(Resource.Id.b9);

由于我有 64 个图像按钮,我是否必须编写 64 行来初始化每个 Resource.Id 以解析为 2d 按钮数组?我知道我可以为每一行和每一列做一个双循环,例如:

按钮[x, y] = FindViewById(Resource.Id.b1);

但是我必须硬编码图片按钮的 resource.id 才能指定。有什么办法可以缩短这个?谢谢

【问题讨论】:

    标签: c# android xamarin


    【解决方案1】:

    是的,您可以动态获取按钮的 ID 并填充您的数组:

        int overallCounter = 1;
        for (int i = 0 i < 8; i ++) {
           for (int j = 0;j < 8; j++ ) {
               buttons[i, j] = FindViewById(Resources.GetIdentifier("b" + overallCounter, "id", this.PackageName));
               overallCounter++;
           }
        }
    

    【讨论】:

    • 我很抱歉...但我不太擅长 android。这行代码有什么作用?它应该如何帮助我将 64 id 替换为数组中的每个数据?
    • 谢谢泰尔。对不起,我太习惯使用 FindViewById 将值设置到数组中。我试图理解代码。对于overrallCounter,我从1开始,在for循环中,我将得到b的标识符和值1,变成b1,“id”相当于Resource.ID?
    • @user3448790 是的,你的权利。在该循环之后将进入下一次迭代,并且overallCounter 将为2,因此它将获得第二个按钮,依此类推......
    • 好的,非常感谢 :D 你救了我的命哈哈!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多