PDA

Ver la Versión Completa : [ CONSULTA ] DetailActivity int posicion


gonza28
27/09/15, 02:38:05
Hola.
Podrias darme una mano?
Tengo un RecyclerView donde estoy mandando los items a una actividad detalles.
El problema es que el metodo que estoy usando en la DetailActivity, solo me permite llamar un Array.
yo estoy ahora necesitando pasar mas arraysList.

Este metodo es en el cual necesito que sean mas Arrays. en este caso mi "modelo.class" se llama
Taladros.class y el Array es:
HERRAMIENTAS1
Pero necesito HERRAMIENTAS2
HERRAMIENTAS3 etc. etc.

Pequeño metodo en DetailActivity

int posicion = getIntent().getIntExtra(FragmentoDirecciones.EXTRA _POSICION, -1);
Taladros itemSeleccionado = Taladros.HERRAMIENTAS1.get(posicion);



Aqui el modelo y array
public class Taladros {
private String precio;
private String nombre;
private String descripcion;
private int idDrawable;

public Taladros(String precio, String nombre, String descripcion, int idDrawable) {

this.precio = precio;
this.nombre = nombre;
this.descripcion = descripcion;
this.idDrawable = idDrawable;
}




public static final List<Taladros> HERRAMIENTAS1 = new ArrayList<Taladros>();
public static final List<Taladros> ANNULLARCUTTERS = new ArrayList<>();



Mi problema solo es en la actividad donde los detalles. alli estoy mensionando
un solo array y necesito mas pero estoy bloqueado aqui.

ojala me den una mano.
Muchas gracias.

kriogeN
27/09/15, 08:38:34
Si los ArrayList de Herramientas son pocos, puedes pasar otro int en el Extra que te diga que ArrayList tienes que usar, por ejemplo:

int array = getIntent().getIntExtra(FragmentoDirecciones.EXTRA _ARRAY, -1);

Taladros itemSeleccionado;

if (array==1) {
itemSeleccionado = Taladros.HERRAMIENTAS1.get(posicion);
} else if (array==2) {
itemSeleccionado = Taladros.HERRAMIENTAS2.get(posicion);
}

etc...

En el caso de que los Arrays sean muchos, o incluso, que sean susceptibles de ir creciendo en un futuro, deberás hacerlo por reflexión. Y en ese caso, acuerdate de configurar ProGuard para mantener la clase.

gonza28
27/09/15, 21:05:05
Si los ArrayList de Herramientas son pocos, puedes pasar otro int en el Extra que te diga que ArrayList tienes que usar, por ejemplo:

int array = getIntent().getIntExtra(FragmentoDirecciones.EXTRA _ARRAY, -1);

Taladros itemSeleccionado;

if (array==1) {
itemSeleccionado = Taladros.HERRAMIENTAS1.get(posicion);
} else if (array==2) {
itemSeleccionado = Taladros.HERRAMIENTAS2.get(posicion);
}

etc...

En el caso de que los Arrays sean muchos, o incluso, que sean susceptibles de ir creciendo en un futuro, deberás hacerlo por reflexión. Y en ese caso, acuerdate de configurar ProGuard para mantener la clase.

Recordé que tambien necesito enviar los extras desde distintos fragmentos y no solo FragmentoDirecciones.
Yo estaba pasando los adapters y los arrays por instancia a un solo ragment como este FragmentoDirecciones. Pero me daba muchos problemas a la hora de implementar el onclik. así que Ese tambien es mi problemas:
Como, o se puede nombrar a mas fragmentos aqui?

Muchas gracias por estar.
Un saludo

kriogeN
28/09/15, 00:18:07
FragmentoDirecciones.EXTRA_ARRAY es una referencia a una variable estática. Puedes usarla con otro Fragment si quieres. O incluso podrías tener una clase llamada Extras y tener ahí todos los "EXTRA_"

Ya si quieres ser muy purista puedes crear una clase abstracta llamada MiFragment y que todos los Fragment que usen esos Extra hereden de ahí.