无法在android中的Parcelable类中使用Date字段

时间:2013-08-23 05:49:39

标签: android parcelable

我正在一个Android项目中工作,我想将一个对象列表从一次活动传递到另一个活动。在对象中也有Date字段..我已经使用Parcelable实现了我的类来从一个活动传递我的List of Object而我不是要解析我的Date字段。所以请建议我一个解决方案。

这是我要传递的课程

public class Consumer {

    public int BusClientLogID;
    public int ClientID;
    public String ClientName;
    public int ClientStatus;
    public int Client_GroupStatus;
    public String EmployeeName;
    public String ServiceCompletedCount;
    public Date SignInTime;
    public Date TimeArrive;
    public Date TimeDepart;
    public Date SignOutTime;
}

2 个答案:

答案 0 :(得分:7)

或者,您可以使用long,然后将其转换为Date并返回。下面是一个示例,说明如何为SignInTime字段执行此操作。

public class Consumer implements Parcelable {

    public long SignInTime;

    public Consumer(Parcel in) {
        SignInTime = in.readLong();
    }

    public Date getSignInTime() {
        return new Date(SignInTime);
    }

    public void setSignInTime(Date date) {
        SignInTime = date.getTime();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeLong(SignInTime);
    }

    @Override
    public int describeContents() {
        return 0;
    }

}

答案 1 :(得分:0)

由于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()