Ich möchte Array-Liste von Objekt von einer Aktivität zu einer anderen senden. Dafür habe ich meine Klasse um Parcelable erweitert.Wie übergeben Sie ArrayList des Objekts zwischen Aktivitäten mit Parcelable?
Noch bekomme ich nicht die Liste. Auch ich habe eine boolesche Variable für die auch Wert Dosis nicht bekommen Änderung gesendet.
Meine Objektklasse:
public class contact implements Parcelable {
private String contactName;
private String contactId;
contact(){}
contact(String contactId,String contactName)
{
this.contactId = contactId;
this.contactName = contactName;
}
public contact(Parcel in) {
contactId = in.readString();
contactName = in.readString();
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(contactId);
dest.writeString(contactName);
}
public static final Parcelable.Creator<contact> CREATOR = new Parcelable.Creator<contact>()
{
public contact createFromParcel(Parcel in)
{
return new contact(in);
}
public contact[] newArray(int size)
{
return new contact[size];
}
};
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
public String getContactName() {
return contactName;
}
public void setContactName(String contactName) {
this.contactName = contactName;
}
public String getContactid() {
return contactId;
}
public void setContactid(String contactId) {
this.contactId = contactId;
}
}
Erste Aktivität:
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("selectd",String.valueOf(selectedItemsPositions));
mContactListActivity = true;
selectedContacts = new ArrayList<>();//to store selected items
for (Integer pos : selectedItemsPositions) {
selectedContacts.add(items.get(pos));
}
Intent i = new Intent();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("selectedContacts",selectedContacts);
bundle.putBoolean("contactListActivity",mContactListActivity);
i.putExtras(bundle);
setResult(RESULT_OK, i);
finish();
}
});
}
Zweite Aktivität:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == PICK_CONTACT_REQUEST) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
Intent i = new Intent();
Bundle bundle = new Bundle();
mSelectedContacts = bundle.getParcelableArrayList("selectedContacts");
mContactListActivity = bundle.getBoolean("contactListActivity");
if(mContactListActivity)
{
addOrganizer.setVisibility(View.INVISIBLE);
}
mAdapter.notifyDataSetChanged();
}
}
}
EDIT:
schon versucht, diese, wie durch sush vorgeschlagen:
Intent i = getIntent();
Bundle bundle = i.getExtras();
mSelectedContacts = (ArrayList<contact>)bundle.getSerializable("selectedContacts");
mContactListActivity = bundle.getBoolean("contactListActivity",false);
Es wird dann eine Nullzeigerausnahme in der Liste ausgelöst.
Was läuft falsch?
UPDATE:
mContactListActivity = true;
selectedContacts = new ArrayList<>();//to store selected items
for (Integer pos : selectedItemsPositions) {
selectedContacts.add(items.get(pos));
}
Intent i = new Intent(ContactList.this,PlanEventActivity.class);
i.putExtra("contactListActivity",mContactListActivity);
i.putExtra("selectedContacts",(Serializable)selectedContacts);
setResult(RESULT_OK, i);
finish();
Zweite Aktivität:
Intent i = getIntent();
mContactListActivity = i.getBooleanExtra("contactListActivity",true);
mSelectedContacts = (Arraylist) i.getSerializableExtra ("selectedContacts");
Jetzt habe ich dies getan, jetzt Boolean wird bestanden, aber die Liste zeigt Null.
ich schon versucht, diese jetzt ein Es wirft Nullzeigerausnahme für das Listenobjekt mSelectedcontacts. @sush –
Bitte überprüfen Sie mein Update – Sush