android - Pasar ArrayList<CustomObject> Between Activities
android-activity parcelable (2)
Este código
Bundle informacion= new Bundle();
informacion.putParcelableArrayList("eventos", ArrayList<Eventos> eventos);
intent.putExtras(informacion);
Debiera ser
Bundle informacion = new Bundle();
ArrayList<Eventos> mas = new ArrayList<Eventos>();
informacion.putSerializable("eventos", mas);
intent.putExtras(informacion);
y Asegúrate de que tu estructura de Eventos sea como un objeto serializable
private class Eventos implements Serializable {
}
Valores de lectura
ArrayList<Eventos> madd=getIntent().getSerializableExtra(key);
he implementado una clase Parcelable:
public class Evento implements Parcelable {
private int;
private String ;
private String imagen;
//more atts
//Constructors, setters and getters
public Evento(Parcel in) {
this.id = in.readInt();
this.titulo = in.readString();
this.imagen=in.readString();
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeString(titulo);
dest.writeString(imagen);
}
public static final Parcelable.Creator<Evento> CREATOR = new Parcelable.Creator<Evento>() {
@Override
public Evento createFromParcel(Parcel in) {
return new Evento(in);
}
@Override
public Evento[] newArray(int size) {
return new Evento[size];
}
};
En mi actividad, intento pasar una lista de arreglos a otra actividad: me sobreescribo en ÍtemClick y paso la información de esta manera:
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//create new activitie
ArrayList<Eventos> eventos = new ArrayList<Eventos>();
Intent intent = new Intent(QueActivity.this, ProductosCategorias.class);
//Create information
Bundle informacion= new Bundle();
informacion.putParcelableArrayList("eventos", eventos);
intent.putExtras(informacion);
y recibirlo en la otra actividad:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_productos_categorias);
lv = (ListView) findViewById(R.id.listaCategoriaElegida);
Bundle informacionRecibida = getIntent().getExtras();
ArrayList<Evento> eventos =new ArrayList<Evento>();
eventos= informacionRecibida.getParcelableArrayList("eventos");
Obtengo una excepción de puntero nulo. Lo eliminé y obtengo NULL cuando ejecuto getParcelableArrayList ("eventos"), es decir, mis eventos de arraylist son nulos, por lo tanto, no recibo información.
Cualquier ayuda será genial
Parcelable es mucho mejor que la serialización en cuanto a rendimiento y otras características.
consulte este enlace:
http://www.3pillarglobal.com/insights/parcelable-vs-java-serialization-in-android-app-development