How do I pass arraylist of a custom object from one java class to another?
本问题已经有最佳答案,请猛点这里访问。
我有一个
这是我的自定义对象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public class AddValues implements Serializable{ public int id; String value; public AddValues(int id, String value) { this.id = id; this.value = value; } @Override public String toString() { String result ="id ="+id+","+" value ="+value; return result; } public int getid() { return this.id; } public String getvalue() { return this.value; } } |
这是发送
1 2 3 | Intent intent = new Intent(BluetoothLeService.this,HomePageFragment.class); intent.putExtra("id", data_id); intent.putExtra("value", list); |
这里"列表"指的是
对于要创建的所有Parcelable对象,应遵循使用的模式,仅更改
Parcelable
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | public class AddValues implements Parcelable{ private int id; private String value; // Constructor public AddValues (int id, String value){ this.id = id; this.value= value; } // Parcelling part public AddValues (Parcel in){ this.id = in.readInt(); this.value= in.readString(); } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(id); dest.writeString(value); } public final Parcelable.Creator CREATOR = new Parcelable.Creator() { public AddValues createFromParcel(Parcel in) { return new AddValues(in); } public AddValues[] newArray(int size) { return new AddValues[size]; } }; |
}
将列表添加到Intent extra应该很简单
列出额外的
1 2 3 | ArrayList<AddValue> list = new ArrayList<>(); Intent intent = new Intent(BluetoothLeService.this,HomePageFragment.class); intent.putExtra("arg_key", list); |
额外获取清单
1 | ArrayList<AddValues> list = (ArrayList<AddValues>) intent.getSerializableExtra("arg_key"); |
另外,您可以使用
您可以使用
1 2 3 | Intent intent = new Intent(BluetoothLeService.this,HomePageFragment.class); intent.putExtra("id", data_id); intent.putExtra("value", list); |
现在要在其他Activity中获取此数据,您需要使用
1 | list = getIntent().getSerializableExtra("value"); |
但是如果你想使用