PDA

Ver la Versión Completa : Recuperar vistas del XML desde otra clase


nathael
31/08/13, 21:36:33
Hola!

Estoy trabajando desde una clase (en otro archivo *.java) pero todo dentro del mismo proyecto. Me gustaría que desde esa clase pudiera hacer un findViewByID(R.id.ImageView).

Poder puedo ya que a la clase la he hecho extends del MainActivity pero si hago eso la aplicación hace crash cuando se inicia.

¿Alguna alternativa?

Tengo la clase Persona que tiene sus atributos y uno de ellos es un ImageView que recupero desde la interfaz.

Gracias.

tompad28
31/08/13, 21:47:20
Lo primero sería plantearte por qué te surge esta necesidad, es posible que no estés organizando bien tu código. A lo mejor deberías estructurar esa actividad en vistas personalizadas más pequeñas.

Dicho esto, lo más fácil es que al constructor de esa clase le pases la actividad de la clase que va a tener las vistas, en lugar de extender de ella. Una vez guardada como atributo podrás acceder al método desde cualquier lugar de esa clase.

En cualquier caso acceder a la vista desde una clase del modelo suena un poco raro, piensa cómo puedes hacerlo para evitar esto.

kriogeN
31/08/13, 22:16:22
Como dice tompad28, creo que no estás haciendo un buen uso de las clases de Android, y que tienes mal organizado tu código.

Si lo que he entendido es que en la Activity MainActivity tienes una clase cliente llamada Persona que tiene un ImageView que quieres ponerlo en la interfaz de MainActivity:

¿No es más fácil que Persona en vez de un ImageView tenga un Bitmap al que accedes mediante un get y se lo asignas al ImageView de MainActivity?

nathael
31/08/13, 22:49:54
Hola,

Voy a considerar ambas opciones. Estaba probando a crear una instancia del MainActivity y pasarla al constructor de la clase "Persona".

Pero también puedo hacer como dice kriogeN. Voy a mirar si lo puedo hacer de esa forma.

Gracias a los dos.

nathael
31/08/13, 23:15:11
He seguido la idea de kriogeN y todo correcto. Una cosilla más para no abrir otro hilo.

Tengo que rellenar varios imageView sacando los Bipmap desde una lista.
Quisiera hacerlo con un bucle que tirara del índice "i". ¿Cómo lo harían?

String id = "R.id.imageView" + i + "";
((ImageView)findViewById(id)).setImageBitmap(foto) ;

Resuelto:

String cadena = "imageView" + i;
int idResource = getResources().getIdentifier(cadena, "id", getPackageName());
Bitmap foto = tablero.getFicha(i).getFoto();
((ImageView)findViewById(idResource)).setImageBitm ap(foto);