如何写入 Parcel 可序列化列表(不可 Parcelable)
How to write to Parcel a List of Serializable (not Parcelable)
我正在使用具有 LatLong 对象的 mapsforge 库来存储地图上的点。不幸的是,它只实现了 Serializable 接口,而不是 Parcelable。
public class LatLong implements Comparable<LatLong>, Serializable
在我的应用程序中,我有一个对象(我们称之为结果),它存储了 LatLong 点列表:
List<LatLong> points;
我的 class 结果实现了 Parcelable。
我的问题是如何写入 Parcel 列表,其中 LatLong 是可序列化的但不是可包裹的?
writeSerializable,writeTypedList 不工作。
在您的 writeToParcel()
方法中,使用此代码:
dest.writeInt(latLongList.size());
for (LatLong latLong : latLongList) {
dest.writeDouble(latLong.latitude);
dest.writeDouble(latLong.longitude);
}
在从 CREATOR.createFromParcel(Parcel source)
调用的私有对象构造函数中,使用此代码:
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));
}
我基于我在 mapsforge.org
找到的 JavaDocs
我正在使用具有 LatLong 对象的 mapsforge 库来存储地图上的点。不幸的是,它只实现了 Serializable 接口,而不是 Parcelable。
public class LatLong implements Comparable<LatLong>, Serializable
在我的应用程序中,我有一个对象(我们称之为结果),它存储了 LatLong 点列表:
List<LatLong> points;
我的 class 结果实现了 Parcelable。
我的问题是如何写入 Parcel 列表,其中 LatLong 是可序列化的但不是可包裹的? writeSerializable,writeTypedList 不工作。
在您的 writeToParcel()
方法中,使用此代码:
dest.writeInt(latLongList.size());
for (LatLong latLong : latLongList) {
dest.writeDouble(latLong.latitude);
dest.writeDouble(latLong.longitude);
}
在从 CREATOR.createFromParcel(Parcel source)
调用的私有对象构造函数中,使用此代码:
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));
}
我基于我在 mapsforge.org
找到的 JavaDocs