2014-02-04 2 views
2

Я пытаюсь передать данные (ArrayList) между Activities на AndroidСписок Parcelable, который содержит пользовательский объект

все работает отлично, когда класс, который реализует Parcelable содержит пользовательские это не распространяется объекты (магазин), но то, что я нужно делать, если мой класс содержит один?

Магазин

public Shop(Parcel in) { 
    this.id = in.readString(); 
    this.name = in.readString(); 
    this.type = in.readString(); 
    this.lat= in.readDouble(); 
    this.long= in.readDouble(); 
} 
@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeString(this.id); 
    dest.writeString(this.name); 
    dest.writeString(this.type); 
    dest.writeDouble(this.lat); 
    dest.writeDouble(this.long); 
} 

@SuppressWarnings("rawtypes") 
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
    public Shop createFromParcel(Parcel in) { 
     return new Shop(in); 
    } 

    public Shop[] newArray(int size) { 
     return new Shop[size]; 
    } 
}; 

А вот мой другой класс предложение, которое является тот, который содержит объект магазин

public Offer(Parcel in) { 
    this.id = in.readInt(); 
    this.title = in.readString(); 
    this.myShop = in.read.......(); 
} 


@Override 
public void writeToParcel(Parcel dest, int flags) { 

    dest.writeInt(this.id); 
    dest.writeString(this.title); 
    dest.write......(this.myShop); 
} 

Какой тип данных я должен читать и писать?

спасибо!

+0

пользовательский объект должен быть parcelable или сериализации, а – Blackbelt

+0

@blackbelt это Parceable, но метод умеет читать и писать? – Andoxko

+0

читать и писать посылая? – Blackbelt

ответ

10

Ваш Shop класс должен реализовать Parcelable и вы должны использовать

public Offer(Parcel in) { 
    this.id = in.readInt(); 
    this.title = in.readString(); 
    this.myShop = in.readParcelable(Shop.class.getClassLoader()); 
} 

@Override 
public void writeToParcel(Parcel dest, int flags) { 
    dest.writeInt(this.id); 
    dest.writeString(this.title); 
    dest.writeParcelable(this.myShop, flags); 
} 
+0

После этого я получаю: java.lang.ClassCastException: java.util.ArrayList не может быть отброшен в android.os.Parcelable –

+0

в моем случае, myShop в основном представляет собой список настраиваемых массивов –

+0

для arraylist используйте этот 'myShop = new ArrayList (); parcel.readList (myShop, Shop.class.getClassLoader()); ' – sud007

Смежные вопросы