android - objetos - ¿Cómo pasar ArrayList<CustomeObject> de una actividad a otra?
pasar objetos entre actividades android (4)
Esta pregunta ya tiene una respuesta aquí:
- Al pasar arraylist de objetos entre actividades 4 respuestas
Deseo enviar Siguiendo ArrayList de una actividad a otra, por favor ayuda.
ContactBean m_objUserDetails = new ContactBean();
ArrayList<ContactBean> ContactLis = new ArrayList<ContactBean>();
Estoy enviando el arraylist anterior después de agregar datos en él de la siguiente manera
Intent i = new Intent(this,DisplayContact.class);
i.putExtra("Contact_list", ContactLis);
startActivity(i);
Pero tengo un problema al recuperarlo.
ArrayList<ContactBean> l1 = new ArrayList<ContactBean>();
Bundle wrapedReceivedList = getIntent().getExtras();
l1= wrapedReceivedList.getCharSequenceArrayList("Contact_list");
En este punto, estoy recibiendo este error:
Type mismatch: cannot convert from ArrayList<CharSequence> to ArrayList<ContactBean>
Mi clase ContactBean implementa Serializable, por favor también diga por qué tenemos que implementar una interfaz serializable.
Puede pasar una ArrayList<E>
la misma manera, si el tipo E
es Serializable
.
putExtra (String name, Serializable value)
al putExtra (String name, Serializable value)
de Intent
para almacenar y getSerializableExtra (String name)
para su recuperación.
Ejemplo:
ArrayList<String> myList = new ArrayList<String>();
intent.putExtra("mylist", myList);
En la otra actividad:
ArrayList<String> myList = (ArrayList<String>) getIntent().getSerializableExtra("mylist");
Utilice este código para pasar el arraylist<customobj>
a la actividad anterior
en primer lugar, serializar nuestro bean de contacto
public class ContactBean implements Serializable {
//do intialization here
}
Ahora pase su lista de arrays
Intent intent = new Intent(this,name of activity.class);
contactBean=(ConactBean)_arraylist.get(position);
intent.putExtra("contactBeanObj",conactBean);
_activity.startActivity(intent);
necesita implementos Parcelable en su clase ContactBean
, puse un ejemplo para usted:
public class ContactClass implements Parcelable {
private String id;
private String photo;
private String firstname;
private String lastname;
public ContactClass()
{
}
private ContactClass(Parcel in) {
firstname = in.readString();
lastname = in.readString();
photo = in.readString();
id = in.readString();
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(firstname);
dest.writeString(lastname);
dest.writeString(photo);
dest.writeString(id);
}
public static final Parcelable.Creator<ContactClass> CREATOR = new Parcelable.Creator<ContactClass>() {
public ContactClass createFromParcel(Parcel in) {
return new ContactClass(in);
}
public ContactClass[] newArray(int size) {
return new ContactClass[size];
}
};
// all get , set method
}
y esto obtener y establecer para su código:
Intent intent = new Intent(this,DisplayContact.class);
intent.putExtra("Contact_list", ContactLis);
startActivity(intent);
segunda clase:
ArrayList<ContactClass> myList = getIntent().getParcelableExtra("Contact_list");
En la primera actividad:
ArrayList<ContactBean> fileList = new ArrayList<ContactBean>();
Intent intent = new Intent(MainActivity.this, secondActivity.class);
intent.putExtra("FILES_TO_SEND", fileList);
startActivity(intent);
En la actividad del receptor:
ArrayList<ContactBean> filelist = (ArrayList<ContactBean>)getIntent().getSerializableExtra("FILES_TO_SEND");`