我有一个实现 Parcelable
的类.读/写 List
的最佳方式是什么?的 Date
反对 Parcel
?
这就是你如何为单个 Date
做到这一点对象:
date = new Date(parcel.readLong()); //read
parcel.writeLong(date.getTime()); //write
但是如何为 List<Date>
做呢? ?
我认为进行写入的笨拙方法是遍历所有 Date
对象并构造一个 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));
但我希望会有更好的东西......
最佳答案
由于 Date 是一个可序列化的对象,您应该能够使用 writeList()
:
List<Date> list = new ArrayList<Date>();
parcel.writeList(list);
ArrayList 还实现了 Serializable,因此您可以使用 writeValue()
:
List<Date> list = new ArrayList<Date>();
parcel.writeValue(list);
最坏情况你可以使用writeSerializable()
关于android - 如何读取/写入 List<Date> 到 Parcel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14083941/