2015-10-06 1 views
0

J'utilise la bibliothèque mapsforge qui a un objet LatLong pour stocker des points sur la carte. Malheureusement, il n'implémente que l'interface Serializable, pas Parcelable.Comment écrire à Parcel une liste de Serializable (non Parcelable)

public class LatLong implements Comparable<LatLong>, Serializable 

Dans mon application, j'ai objet (Appelons ce résultat) qui stocke entre autres la liste de points LatLong:

List<LatLong> points; 

Ma classe Résultat implémente Parcelable.

Ma question est comment écrire à une liste de colis, où LatLong est sérialisable mais pas parcelable? writeSerializable, writeTypedList ne fonctionne pas.

Répondre

2

Dans votre méthode writeToParcel(), utilisez ce code:

dest.writeInt(latLongList.size()); 
for (LatLong latLong : latLongList) { 
    dest.writeDouble(latLong.latitude); 
    dest.writeDouble(latLong.longitude); 
} 

Dans votre constructeur d'objet privé appelé à partir CREATOR.createFromParcel(Parcel source), utilisez ce code:

latLongList = new ArrayList<LatLong>(); 
int size = source.readInt(); 
for (int i = 0; i < size; i++) { 
    double lat = source.readDouble(); 
    double lon = source.readDouble(); 
    latLongList.add(new LatLong(lat, lon)); 
} 

Je fonde cela sur les JavaDocs j'ai trouvé à mapsforge.org

+0

Merci, ça fonctionne. Une autre solution consiste à utiliser parcel.writeValue – user3626048