2

我有一个实现Parcelable. 将 a对象读/写到 a 的最佳方法List是什么?DateParcel

这是您可以为单个Date对象执行此操作的方法:

    date = new Date(parcel.readLong()); //read

    parcel.writeLong(date.getTime());   //write

但是怎么做呢List<Date>

我想写的笨拙的方法是遍历所有Date对象并构造 a long[],如下所示:

long[] datesAsLongs = new long[dates.size()];
for (int i = 0; i < dates.size(); i++)
    datesAsLongs[i] = dates.get(i).getTime();
parcel.writeLongArray(datesAsLongs);

要阅读,你可以这样做:

dates = new ArrayList<Date>();
for (long dateAsLong : parcel.createLongArray())
    dates.add(new Date(dateAsLong));

但我希望会有更好的东西......

4

1 回答 1

2

由于 Date 是一个 Serializable 对象,您应该能够使用writeList()

List<Date> list = new ArrayList<Date>();
parcel.writeList(list);

ArrayList 还实现了 Serializable,因此您可以使用writeValue()

List<Date> list = new ArrayList<Date>();
parcel.writeValue(list);    

您可以使用的最坏情况writeSerializable()

于 2012-12-29T17:41:51.080 回答