动态访问布局元素

Jos*_*uel 5 android

我有一个让我发疯的问题.

我的屏幕上有一大堆按钮(10或多或少),在TableRow中.

我需要访问它们,并且我计划通过循环执行.

访问一个,很容易,添加这个:

boton7 = (Button) findViewById (R.id.Btn7)
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果你可以动态设置id字符串(R.id.Btn7)放入一个可以获取按钮,例如,更改颜色....这样的事情:

for (int i = 0; i <10; i + +) {
   Button eachBoton= (Button) findViewById (R.id.Btn + i);
   eachBoton. setBackgroundColor (Color.Red);
}
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用......我的问题是,是否有人知道如何安装链条

R.id.Btn + i
Run Code Online (Sandbox Code Playgroud)

上班.

非常感谢.

Ale*_*min 14

您可以使用Ressources::getIdentifier()获取给定资源名称的资源标识符:

int ressourceId = getResources().getIdentifier(
    "Btn"+i,
    "id",
    this.getContext().getPackageName());
Button button = (Button) findViewById(ressourceId);
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用所需的所有ID准备一个数组,并访问该数组的元素.这更有效:

private final int[] btns = {R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, ...}
...
Button button = (Button) findViewById(btns[i]);
Run Code Online (Sandbox Code Playgroud)