Para pasar un objeto
definido por nosotros entre las actividades de nuestra aplicación, vamos a
seguir los mismos pasos que el caso de pasar una variable del tipo básico,
String, Enteros, Boleanos…
La única diferencia es que nuestro objeto debe implementar
la interfaz Parcelable.
Supongamos que creamos una clase Usuario y que en nuestra
aplicación es necesario pasar una instancia de este objeto entre las
actividades. Nuestra clase Usuario sería la siguiente (Omito constructores,
getters, setters y demás métodos para que se vea claro el ejemplo).
public class Usuario {
private String mail;
private String nombre;
private int edad;
private
ArrayList<Usuario> amigos;
}
Bien, pues para que nuestro objeto del tipo Usuario se pueda
pasar mediante un Intent, es
necesario que implemente la interfaz Parcelable, como se ve a continuación.
public class Usuario implements Parcelable {
private String mail;
private String nombre;
private int edad;
private
ArrayList<Usuario> amigos;
protected Usuario(Parcel in) {
mail = in.readString();
nombre = in.readString();
edad = in.readInt();
if (in.readByte() == 0x01) {
amigos = new ArrayList<Usuario>();
in.readList(amigos, Usuario.class.getClassLoader());
} else {
amigos = null;
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(mail);
dest.writeString(nombre);
dest.writeInt(edad);
if (amigos == null) {
dest.writeByte((byte) (0x00));
}
else {
dest.writeByte((byte) (0x01));
dest.writeList(amigos);
}
}
@SuppressWarnings("unused")
public static final
Parcelable.Creator<Usuario> CREATOR = new Parcelable.Creator<Usuario>() {
@Override
public Usuario
createFromParcel(Parcel in) {
return new Usuario(in);
}
@Override
public Usuario[] newArray(int size) {
return new Usuario[size];
}
};
}
Os dejo el siguiente enlace mediante el que podréis acceder
a una página, que os ayudará mucho en este proceso de implementar la interfaz Parcelable.
Una vez que nuestro objeto implementa la interfaz Parcelable correctamente, podemos crear un Intent de la siguiente manera.
Usuario usuario = new Usuario();
usuario.setNombre(nombre);
usuario.setMail(mail);
usuario.setEdad(edad);
usuario.setAmigos(amigos);
Intent intent = new Intent(MainActivity.this, ActividadDestino.class);
intent.putExtra("usuario", usuario);
startActivity(intent);
Usuario usuario = (Usuario)
getIntent().getExtras().getParcelable("usuario");
String nombre = usuario.getNombre();
String mail = usuario.getMail();
int edad = usuario.getEdad();
ArrayList<Usuario> = usuario.getAmigos();
Vemos que la diferencia entre recuperar una variable básica y objeto radica en que en este último caso utilizamos el método getParcelable().
No hay comentarios:
Publicar un comentario