Forma de pasar objetos entre distintas actividades en Android. Una opción sería implementar el objeto con la interfaz Serializable, pero es muy lento para objetos grandes y complejos.
En la práctica los tipos Parcelable son como escribir los tipos en un Bundle y recuperarlos después.
Lo primero es crearnos una clase que implemente la interfaz Parcelable.
Es recomendable añadir un constructor al objeto que reciba un parcel para recrearlo a partir de ahí y un método ReadFromParcel(Parcel in) para rellenar los campos del objeto.
Guardamos el objeto parcel implementando el método writeToParcel(Parcel dest, int flags).
El objeto Parcel nos ofrece unos métodos para guardar los objetos según su tipo (NO EXISTE UN METODO PARA BOOLEANOS,la solución que se nos ofrece es un array de booleanos con un solo valor)
(Para atributos que son objetos de clases que hemos creado, debemos hacer esa clase Parcelable también y utilizar la función WriteParcelable())
{
dest.writeParcelable(fecha, flags);
.
.
.
fecha=in.readParcelable(Fecha.class.getClassLoader());
Fecha.java implementaría también Parcelable( y así recursivamente…)
}
Para recuperar el objeto implementamos el método readFromParcel(Parcel in). Nuevamente el objeto Parcel nos ofrece métodos para leer diferentes tipos.
Para leer listas tipadas es necesario un objeto Parcelable.CREATOR
ej:public static final Parcelable.Creator<Estudiante> CREATOR
= new Parcelable.Creator<Estudiante>() {
public Estudiante createFromParcel(Parcel in) {
return new Estudiante(in);
}
public Estudiante[] newArray(int size) {
return new Estudiante[size];
}
};
NOTA: cuando leemos del Parcel hay que leerlo en el mismo orden en que lo escribimos.
Podéis encontrar el tutorial completo en la siguiente dirección:
http://androcode.es/2012/12/trabajando-con-parcelables/
Leave a Reply