将一个活动的对象列表传递给android中的其他活动

我想从另一个活动的一个活动传递一个对象的列表。 我有一个类SharedBooking下面:

public class SharedBooking { public int account_id; public Double betrag; public Double betrag_effected; public int taxType; public int tax; public String postingText; } 

代码来自呼叫活动:

 public List<SharedBooking> SharedBookingList = new ArrayList<SharedBooking>(); public void goDivision(Context context, Double betrag, List<SharedBooking> bookingList) { final Intent intent = new Intent(context, Division.class); intent.putExtra(Constants.BETRAG, betrag); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(intent); } 

所谓的活动CODE:

 Bundle extras = getIntent().getExtras(); if (extras != null) { amount = extras.getDouble(Constants.BETRAG,0); } 

如何从一项活动发送SharedBooking列表并接收其他活动?

请给我build议任何可用的链接或示例代码。

Solutions Collecting From Web of "将一个活动的对象列表传递给android中的其他活动"

使用parcelable 。 以下是你将如何做到这一点:

 public class SharedBooking implements Parcelable{ public int account_id; public Double betrag; public Double betrag_effected; public int taxType; public int tax; public String postingText; public SharedBooking() { account_id = 0; betrag = 0.0; betrag_effected = 0.0; taxType = 0; tax = 0; postingText = ""; } public SharedBooking(Parcel in) { account_id = in.readInt(); betrag = in.readDouble(); betrag_effected = in.readDouble(); taxType = in.readInt(); tax = in.readInt(); postingText = in.readString(); } public int getAccount_id() { return account_id; } public void setAccount_id(int account_id) { this.account_id = account_id; } public Double getBetrag() { return betrag; } public void setBetrag(Double betrag) { this.betrag = betrag; } public Double getBetrag_effected() { return betrag_effected; } public void setBetrag_effected(Double betrag_effected) { this.betrag_effected = betrag_effected; } public int getTaxType() { return taxType; } public void setTaxType(int taxType) { this.taxType = taxType; } public int getTax() { return tax; } public void setTax(int tax) { this.tax = tax; } public String getPostingText() { return postingText; } public void setPostingText(String postingText) { this.postingText = postingText; } public int describeContents() { // TODO Auto-generated method stub return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeInt(account_id); dest.writeDouble(betrag); dest.writeDouble(betrag_effected); dest.writeInt(taxType); dest.writeInt(tax); dest.writeString(postingText); } public static final Parcelable.Creator<SharedBooking> CREATOR = new Parcelable.Creator<SharedBooking>() { public SharedBooking createFromParcel(Parcel in) { return new SharedBooking(in); } public SharedBooking[] newArray(int size) { return new SharedBooking[size]; } }; } 

传递数据:

 Intent intent = new Intent(getApplicationContext(),YourActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable("data", sharedBookingObject); intent.putExtras(bundle); startActivity(intent); 

检索数据:

 Bundle bundle = getIntent().getExtras(); sharedBookingObject = bundle.getParcelable("data"); 

首先使列表的类实现Serializable

 public class Object implements Serializable{} 

然后你可以把这个列表转换成(Serializable)。 像这样:

 List<Object> list = new ArrayList<Object>(); myIntent.putExtra("LIST", (Serializable) list); 

并检索你做的列表:

 Intent i = getIntent(); list = (List<Object>) i.getSerializableExtra("LIST"); 

而已。

可分类对象类

  public class Student implements Parcelable { int id; String name; public Student(int id, String name) { this.id = id; this.name = name; } public int getId() { return id; } public String getName() { return name; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int arg1) { // TODO Auto-generated method stub dest.writeInt(id); dest.writeString(name); } public Student(Parcel in) { id = in.readInt(); name = in.readString(); } public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() { public Student createFromParcel(Parcel in) { return new Student(in); } public Student[] newArray(int size) { return new Student[size]; } }; } 

和名单

 ArrayList<Student> arraylist = new ArrayList<Student>(); 

代码来自调用活动

 Intent intent = new Intent(this, SecondActivity.class); Bundle bundle = new Bundle(); bundle.putParcelableArrayList("mylist", arraylist); intent.putExtras(bundle); this.startActivity(intent); 

所谓的活动代码

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Bundle bundle = getIntent().getExtras(); ArrayList<Student> arraylist = bundle.getParcelableArrayList("mylist"); } 

您可能需要在您的SharedBooking类中实现Parcelable接口,并将它们添加到意图即使用putParcelableArrayListExtra方法。 检查文档在这里:

http://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra%28java.lang.String,%20java.util.ArrayList%3C?%20extends%20android.os.Parcelable%3E%29