android - 如何读取/写入 List<Date> 到 Parcel?

标签 android date serialization parcelable parcel

我有一个实现 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/

相关文章:

c++ - 从基类发送和接收序列化类

android - 如何知道字符串是否有椭圆形

android - 关于 android.R.drawable 中 'private' 可绘制对象的说明

mysql - 在单个表中使用多个列的复杂查询

r - 按 id 为两个特定变量合并日期并创建新变量

c# - 为什么 C# 空条件运算符不适用于 Unity 可序列化变量?

c# - 如何将任何类型的文件转换为字节数组?

android - Dagger 2 Scope for Fragments 通信

android - 新实例失败 : no <init>

java - SimpleDateFormat 时钟自动更新