Ich habe die folgende Klasse erstellt und Objekte dieser Klasse verwendet. Ich möchte eine Liste dieser Klasse übergeben und sie an die nächste Aktivität senden.Wie sende ich eine Liste von Objekten von einer Aktivität zu einer anderen 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];
}
};
}
In meinem MainActivity, ich schaffe eine Liste
List<contact> c=new ArrayList<>();
Und nachdem einige Objekte zu dieser Liste hinzufügen, ich versuche, es auf die nächste Aktivität obwohl putExtra zu senden(), aber bin immer ein Error. Ich versuche, die Liste wie diese zu passieren,
Intent intent=new Intent(getApplicationContext(),NextActivity.class);
intent.putExtra("VAR1", (Parcelable) c);
startActivity(intent);
Und in meinem NextActivity.class bin es so empfängt,
Bundle bundle = getIntent().getExtras();
c = bundle.getParcelableArrayList("VAR1");
Auf die App läuft, bin ich die folgende Fehlermeldung erhalten:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to android.os.Parcelable
Wie soll ich dieses Problem lösen?
Wenn putParcelableArrayList tun ("VAR1", Arraylist), tritt dieser Fehler auf: Fehler :(291, 51) Fehler: Inkompatible Typen: Liste kann nicht in ArrayList erweitert Parcelable> –
sein funktioniert perfekt Ich versuchte Ihren Code mit putParcelableArrayList ("VAR1", Arraylist) – akhilesh0707
Ja sorry, ich habe einen Tippfehler in meinem Projekt. Vielen Dank. –