[英]Send List Objects using Intent from one Activity to another using Parcelable | Android
[英]How to send a list of objects from one activity to another in android?
我创建了以下类并使用该类的对象。 我想传递此类的列表并将其发送到下一个活动。
class contact implements Comparable<contact>, Parcelable {
String name;
private String phone;
private Bitmap image;
contact(String n, String p, Bitmap pic) {
super();
name = n;
phone = p;
image = pic;
}
public contact(Parcel in) {
String[] data = new String[3];
in.readStringArray(data);
this.name=data[0];
this.phone=data[1];
byte [] encodeByte= Base64.decode(data[2],Base64.DEFAULT);
this.image = BitmapFactory.decodeByteArray(encodeByte, 0, encodeByte.length);
}
public void setImage(Bitmap image) {
this.image = image;
}
Bitmap getImage() {
return image;
}
public void setName(String name) {
this.name = name;
}
String getName() {
return name;
}
public void setPhone(String phone) {
this.phone = phone;
}
String getPhone() {
return phone;
}
static Comparator<contact> ContactNameComparator
= new Comparator<contact>() {
public int compare(contact c1, contact c2) {
String name1 = c1.getName().toUpperCase();
String name2 = c2.getName().toUpperCase();
return name1.compareTo(name2);
}
};
@Override
public int compareTo(@NonNull contact o) {
return 0;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeStringArray(new String[]{this.getName(),this.getPhone(),String.valueOf(getImage())});
}
public static final Creator<contact> CREATOR = new Creator<contact>(){
@Override
public contact createFromParcel(Parcel in) {
return new contact(in);
}
@Override
public contact[] newArray(int size) {
return new contact[size];
}
};
}
在我的MainActivity中,我正在创建一个列表
List<contact> c=new ArrayList<>();
在将一些对象添加到此列表之后,我试图通过putExtra()将其发送到下一个活动,但出现错误。 我正在尝试通过这样的清单,
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
intent.putExtra("VAR1", (Parcelable) c);
startActivity(intent);
然后在我的NextActivity.class中,这样接收它,
Bundle bundle = getIntent().getExtras();
c = bundle.getParcelableArrayList("VAR1" );
运行该应用程序后,出现以下错误:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to android.os.Parcelable
我应该如何解决这个问题?
尝试这个
通话活动中的代码
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("VAR1", 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<contact> arraylist = bundle.getParcelableArrayList("VAR1");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.