2016-05-16 15 views
1

Ich habe ein benutzerdefiniertes Objekt, das private List<AnotherCustomObject> mList; hat. Beachten Sie, dass AnotherCustomObjectParcelable implementiert.Eine Liste in Parcelable schreiben?

Allerdings, wenn ich mList zu dest in writeToParcel() schreiben will und es dann später gelesen zurück, dann ist dies der richtige Weg:

dest.writeList(mList);

und dann im Leseverfahren

in.readList(mList, ClassLoader.getSystemClassLoader());

Korrekt?

+1

Haben Sie versucht, dies zu tun? –

+0

Es wirft keine Fehler, aber das macht es nicht korrekt –

Antwort

0

Bitte versuchen Sie den erforderlichen Classloader zu verwenden.

in.readList(mList, AnotherCustomObject.getClass().getClassLoader()); 
+0

Gibt es einen Unterschied zwischen '.class' und' .getClass() '? –

+0

Besser ist der statische Zugriff über '.class' –

0

Ihre List<AnotherCustomObject> mList kann mit dem writeTypedList(List<T> val) Verfahren unter Verwendung des readTypedList(List<T> list, Creator<T> c) Verfahren und geschrieben gelesen werden.

dest.writeTypedList(mList); 

Und dann in den Konstruktor, die eine Instanz von einem Parcel Objekt erstellt, kann man setzen:

In Ihrem writeToParcel Methode würden Sie folgendes schreiben

in.readTypedList(mList, AnotherCustomObject.CREATOR); 
Verwandte Themen