Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何读/写列表<;日期>;寄包裹?_Android_Date_Serialization_Parcelable_Parcel - Fatal编程技术网

Android 如何读/写列表<;日期>;寄包裹?

Android 如何读/写列表<;日期>;寄包裹?,android,date,serialization,parcelable,parcel,Android,Date,Serialization,Parcelable,Parcel,我有一个类实现了Parcelable。将日期对象的列表读/写到包裹的最佳方式是什么 这是如何为单个日期对象执行此操作的: date = new Date(parcel.readLong()); //read parcel.writeLong(date.getTime()); //write 但是如何为列表执行此操作 我想写的笨拙方法是循环所有Date对象并构造一个long[],如下所示: long[] datesAsLongs = new long[dates.size(

我有一个类实现了
Parcelable
。将
日期
对象的
列表
读/写到
包裹
的最佳方式是什么

这是如何为单个
日期
对象执行此操作的:

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

    parcel.writeLong(date.getTime());   //write
但是如何为
列表
执行此操作

我想写的笨拙方法是循环所有
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);
long[]datesAsLongs=新的long[dates.size()];
对于(int i=0;i
要阅读,你可以:

dates = new ArrayList<Date>();
for (long dateAsLong : parcel.createLongArray())
    dates.add(new Date(dateAsLong));
dates=newarraylist();
for(long dateAsLong:parcel.createLongArray())
日期。添加(新日期(dateAsLong));

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

因为Date是一个可序列化的对象,您应该能够使用:


最坏的情况下,您可以使用

是的,我已经考虑过了,但是
List
没有实现
Serializable
(即使
ArrayList
实现了),所以您必须强制转换它。如果可能的话,我不想那样做。更不用说
writeSerializable()
对性能有影响…List是一个接口,它不能实现序列化,您的
List
对象实际上是一个具有List方法的日期数组列表。我不清楚您为什么没有使用
writeList()
。通过“更不用说writeSerializable()具有性能影响…”我假设您已经阅读了包裹文档,但是您是否阅读了非类型化容器上的选择
readList()
writeList()
是您想要的方法。不,我的
Date
对象列表不保证是
ArrayList
。。。它所在的类有一个公共的
setDates(List dates)
setter,所以我不能假设它总是
ArrayList
。这就是为什么我特意在这个问题的标题中写了
List
。谢谢你的回答,我明白了。虽然我可能太短视,考虑其他类型的列表实现在这里,开发人员不在这里。我刚刚用LinkedList、Stack和Vector测试了
writeList()
readList()
。我还查看了源代码,这些方法应该适用于任何实现List的类。“你知道这种日期对象的通用序列化是否会降低性能吗?”我做了一些简单的测试,但没有注意到明显的区别。。。但是考虑到文档警告,当你完成应用程序的编写后,你应该写一张便条,在DDMS中仔细检查自己。
List<Date> list = new ArrayList<Date>();
parcel.writeList(list);
List<Date> list = new ArrayList<Date>();
parcel.writeValue(list);