Tengo 5 botones como btn1, btn2, btn3, btn4, btn5 y una variable entera como numberInt

Quiero que cuando numberInt cambie a un número, el botón con ese número se vuelve invisible así:

if (number == 1){
   btn1.setVisibility(View.GONE);
}else if (number == 2){
   btn2.setVisibility(View.GONE);

¿Hay alguna forma de utilizar numberInt final de la palabra clave 'btn'? porque es difícil escribir si se repite cuando hay demasiados botones.

Perdón por las malas explicaciones.

0
SouthpaW 24 ago. 2020 a las 19:00

2 respuestas

La mejor respuesta

Pon todos los botones en una lista

List<Button> buttons = new ArrayList();
buttons.add(btn1);
buttons.add(btn2);

Luego refiérase a ellas por índice

buttons.get(number);

No hay forma de construir un identificador en tiempo de ejecución, p. Ej.

btn${number}.setVisibility(View.GONE); // not valid java

Puede hacer ese tipo de cosas en algunos lenguajes de programación, pero no en Java.

4
Michael 24 ago. 2020 a las 16:02

No necesita usar 'If loop' si todos sus botones están colocados en una matriz. Dado que las matrices tienen 'int' como índice que se puede utilizar a su favor.

Button[] buttons = {btn0, btn1, btn2, ...};

Use un método como el siguiente para actualizar la visibilidad de la vista

public void setInvisibleButton(int i){
   buttons[i].setVisibility(View.GONE)
}
0
jsp phani 24 ago. 2020 a las 16:28