Objetos parcelable

5 Mar

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/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: