Ver la Versión Completa : [ CONSULTA ] Alterar una propiedad de varios elementos secuenciales
Hola,
En la aplicación que estoy desarrollando tengo una serie de botones que estan identificados por un ID secuencial (boton1, boton2, boton3...etc ). Estos botones por defecto estan con la propiedad enable en false (osea deshabiltados).
Lo que estoy tratando de hacer y no consigo, es que una función que reciba como parametro un entero, active los botones desde ese valor hacia atras, es decir, que si le paso un 5 como parametro, me active los botones del 1 al 5.
Seria posible hacer esto para evitar la manera chapucera por medio de un switch??
Un saludo, y gracias de antemano por el interes ;-)
mocelet
20/04/13, 17:15:09
Mete las referencias a todos los botones en un array, de modo que la posición 0 corresponda al primer botón, la 1 al segundo, etc...
Con eso ya solo necesitas hacer un
for (int i = 0; i < selecionado; i++) botones[i].setEnabled(true)
Mete las referencias a todos los botones en un array, de modo que la posición 0 corresponda al primer botón, la 1 al segundo, etc...
Con eso ya solo necesitas hacer un
for (int i = 0; i < selecionado; i++) botones[i].setEnabled(true)
Lo primero gracias por responder.
El buclue que me propones ya lo tenia claro, el problema reside como crear el array con las referencias de los botones.
Haciendo pruebas con arrays de tipo String (siendo los nombres de los identificadores de cada boton los almacenados):
String[] botones = {"b1", "b2", "b3", "b4" }El compilador marca error ya que la clase String no puede usar el metodo .setEnabled
un saludo
kriogeN
22/04/13, 15:42:37
Prueba con esto en un bucle:
int boton = getResources().getIdentifier("boton"+n, "id", getPackageName());
Prueba con esto en un bucle:
int boton = getResources().getIdentifier("boton"+n, "id", getPackageName());
Lo he probado de la siguiente manera:
for (int i = 1; i <= maxBotones; i++){
int boton = getResources().getIdentifier("boton" + i, "id", getPackageName());
boton.setEnabled(true);
}
Pero me da un error diciendo que es imposiblle llamar al metodo setEnabled desde un tipo int primitivo.
un saludo
kriogeN
22/04/13, 16:20:25
Obviamente, una vez que tienes el int tienes que buscar el objeto:
Button button = (Button)findViewById(boton);
button.setEnabled(true);
Obviamente, una vez que tienes el int tienes que buscar el objeto:
Button button = (Button)findViewById(boton);
button.setEnabled(true);
Sinceramente vengo de PHP y estas cosas aun se me escapan un poco jeje no habia caido en ese detalle.
Ya me funciona correctamente el codigo, asique muchas gracias a los dos por el interés y la ayuda.
un saludo !!
vBulletin® v3.8.1, Copyright ©2000-2026, Jelsoft Enterprises Ltd.