27-diciembre-2015
admin

Interface Parcelable en Android

Esta interface se usa en Android para poder pasar objetos entre las Activities. A continuación se muestra un ejemplo de uso paso por paso:

Paso 1/ Crear una clase que implemente el interface Parcelable

public class User implements Parcelable{
	private String id;
	private String name;
	private String direccion;
        //La clase Comentario también debería un objeto Parcelable
	private List< Comentario> comments;

        ....getters y setters....
}

Paso 2/ Implementar los métodos describeContents y writeToParcel

	@Override
	public int describeContents() {
		return 0;
	}
	@Override
	public void writeToParcel(Parcel dest, int flags) {
		dest.writeString(this.id); 
		dest.writeString(this.name);
		dest.writeString(this.direccion);
		dest.writeTypedList(this.comments);
	}

Paso 3/ Implementar un campo static llamado CREATOR

	public static final Parcelable.Creator< User> CREATOR = 
                                  new Parcelable.Creator< User>() {
	    @Override
	    public User createFromParcel(Parcel source) {
	        return new User(source);
	    }
	 
	    @Override
	    public User[] newArray(int size) {
	        return new User[size];
	    }
	 
	};


	private User(Parcel source) {
                // los campos se deben leer en el mismo orden que se han
                // escrito en writeToParcel
		this.id = source.readString();
		this.name = source.readString();
		this.direccion = source.readString();
		if (comments == null) {
			comments = new LinkedList< Comentario>();
		}
		source.readTypedList(comments, Comentario.CREATOR);
	}

Paso 4/ Para utilizarlo sería

//Al lanzar la nueva actividad se metería el objeto parcelable
Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("variableUser", user); //user sería un objeto User
startActivity(intent);
//en el create de la actividad lanzada se extraería
public class OtherActivity extends Activity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_second);
 
         User datos = getIntent().getParcelableExtra("variableUser");
     }
     ....
}

Documentación Oficial

Comentarios cerrados.

Categorias

Linkedin