我有以下两个班级。
public class People{
private int mobile_number;
private String email_id, name;
private Testimony[] testimony;
public People(String name, int mobile_number, String email_id, Testimony ... testimony) {
this.name = name;
this.mobile_number = mobile_number;
this.email_id = email_id;
this.testimony = testimony;
}
public Testimony[] getTestimony() {
return testimony;
}
public String getEmail_id() {
return email_id;
}
public int getMobile_number() {
return mobile_number;
}
public String getName() {
return name;
}
}
和
public class Testimony {
private String testimony;
private String name;
private int id;
public Testimony(String testimony,String name, int id){
this.testimony = testimony;
this.id = id;
this.name = name;
}
public String gettestimony() {
return testimony;
}
public String getname() {
return name;
}
public int getid() {
return id;
}
}
ArrayList myPeople中有很多对象,我碰巧知道需要使用哪个ArrayList项。考虑到Testimony ArrayList具有可变数量的对象并且有时可能具有大量对象这一事实,将特定人物对象从一个Activity传递到另一个Activity的最佳方法是什么。
有another question内容相似,但它实际上是不同的,因为另一个问题解决了如何将对象传递给另一个Android Activity而不是 数组对象。
答案 0 :(得分:1)
您可以让您的类实现Serializable,然后在启动活动时执行
yourIntent.putExtra("myObj", obj);
和其他活动:
getIntent().getSerializableExtra("myObj");
How to pass an object from one activity to another on Android
答案 1 :(得分:1)
虽然你可以使用序列化方法将arraylist从一个活动传递给其他活动,但我觉得这不是好方法。
而是创建一个Singleton类和setter和getter方法来设置和获取arraylist。
在第一个活动中初始化单个对象并设置arraylist值。
您可以在其他活动中获取单例类实例,并获取已由第一个活动设置的arraylist。
例如:
public class UtilityClass {
private static UtilityClass instance;
private ArrayList list;
public ArrayList getList() {
return list;
}
public void setList(ArrayList list) {
this.list = list;
}
private UtilityClass(){}
public static UtilityClass getInstance(){
if(instance == null){
instance = new UtilityClass();
}
return instance;
}
}
您可以从下面的第一项活动设置
UtilityClass.getInstance().setList(list);
从下面的第二项活动中获取此信息,
UtilityClass.getInstance().getList();
答案 2 :(得分:0)
实施parcelable,然后使用意图中的putParcelableArrayListExtra
:
Intent intent = new Intent(this, NextActivity.class);
intent.putParcelableArrayListExtra(name, arrayList);
startActivity(intent);
要取回arraylist,请使用getIntent().getParcelableArrayListExtra(name)
。确保两个名称匹配。
答案 3 :(得分:0)
public class People implements Parcelable {
private int mobile_number;
private String email_id, name;
private Testimony[] testimony;
public People(String name, int mobile_number, String email_id, Testimony ... testimony) {
this.name = name;
this.mobile_number = mobile_number;
this.email_id = email_id;
this.testimony = testimony;
}
private People(Parcel in) {
name = in.readString();
mobile_number = in.readInt();
email_id = in.readString();
testimony = in.readString();
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeInt(mobile_number);
dest.writeString(email_id);
dest.writeString(testimony);
}
public static final Parcelable.Creator<People> CREATOR = new Parcelable.Creator<People>() {
public People createFromParcel(Parcel in) {
return new People(in);
}
public People[] newArray(int size) {
return new People[size];
}
};
// all get , set method
}
这将为您的代码获取和设置:
Intent intent = new Intent(this,DisplayContact.class);
intent.putExtra("Contact_list", ContactLis);
startActivity(intent);
第二课:
ArrayList<People> myList = getIntent().getParcelableExtra("Contact_list");
答案 4 :(得分:0)
他可以在您的自定义类中实现parcelable接口,然后您可以将此类的arraylist传递给anasteractivity
public override void OnActionExecuting(
System.Web.Http.Controllers.HttpActionContext actionContext)
{ }