Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 20/04/13, 16:37:44
Avatar de vzk91
vzk91 vzk91 no está en línea
Miembro del foro
Mensajes: 199
 
Fecha de registro: nov 2012
Mensajes: 199
Modelo de smartphone: OnePlus 6T
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
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
Responder Con Cita


  #2  
Viejo 20/04/13, 17:15:09
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
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
Código:
for (int i = 0; i < selecionado; i++) botones[i].setEnabled(true)
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 22/04/13, 14:59:27
Avatar de vzk91
vzk91 vzk91 no está en línea
Miembro del foro
Mensajes: 199
 
Fecha de registro: nov 2012
Mensajes: 199
Modelo de smartphone: OnePlus 6T
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
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
Código:
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):

Código:
String[] botones = {"b1", "b2", "b3", "b4" }
El compilador marca error ya que la clase String no puede usar el metodo .setEnabled

un saludo
Responder Con Cita
  #4  
Viejo 22/04/13, 15:42:37
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Prueba con esto en un bucle:

int boton = getResources().getIdentifier("boton"+n, "id", getPackageName());
Responder Con Cita
  #5  
Viejo 22/04/13, 16:12:36
Avatar de vzk91
vzk91 vzk91 no está en línea
Miembro del foro
Mensajes: 199
 
Fecha de registro: nov 2012
Mensajes: 199
Modelo de smartphone: OnePlus 6T
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Prueba con esto en un bucle:

int boton = getResources().getIdentifier("boton"+n, "id", getPackageName());
Lo he probado de la siguiente manera:
Código:
            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
Responder Con Cita
  #6  
Viejo 22/04/13, 16:20:25
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Obviamente, una vez que tienes el int tienes que buscar el objeto:

Button button = (Button)findViewById(boton);
button.setEnabled(true);
Responder Con Cita
Gracias de parte de:
  #7  
Viejo 22/04/13, 19:41:07
Avatar de vzk91
vzk91 vzk91 no está en línea
Miembro del foro
Mensajes: 199
 
Fecha de registro: nov 2012
Mensajes: 199
Modelo de smartphone: OnePlus 6T
Tu operador: Movistar
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
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 !!
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 05:54:22 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007