使用带序列化的Parceler库

时间:2016-07-03 05:13:41

标签: android serialization annotations parcelable parceler

我想使用带序列化的Parceler库。这就是我现在没有使用这个库的原因:

public class Venue {

@SerializedName("id")
String venueID;
@SerializedName("name")
String venueName;
@SerializedName("url")
String venueUrl;


public Venue() {
}}

我阅读了图书馆的教程,并说它可以通过添加注释来使用它:

@Parcel(Parcel.Serialization.BEAN)

但我仍然感到困惑。据我所知,我不需要使用@SerializedName注释。那么我需要使用带有原始名称的字段还是使用序列化名称?像这样:

    @Parcel(Parcel.Serialization.BEAN)
    public class Venue {

        //    @SerializedName("id")
        String id;
        //    @SerializedName("name")
        String name;
        //    @SerializedName("url")
        String url;

@ParcelConstructor
    public Venue(String id, String name, String url) {
        this.id = id;
        this.name = name;
        this.url = url;

    }

        public Venue() {
        }

    }

或者这个:

    @Parcel(Parcel.Serialization.BEAN)
    public class Venue {
        //    @SerializedName("id")
        String vnueID;
        //    @SerializedName("name")
        String venueName;
        //    @SerializedName("url")
        String venueUrl;

@ParcelConstructor
        public Venue(String vnueID, String venueName, String venueUrl) {
            this.vnueID = vnueID;
            this.venueName = venueName;
            this.venueUrl = venueUrl;

        }

        public Venue() {
        }

    }

很抱歉,如果这是一个愚蠢的问题,但我还不了解可解析和序列化。

1 个答案:

答案 0 :(得分:1)

使用Parcel.Serialization.BEAN将指示Parceler根据Java Bean标准查找并使用getter和setter。您的案例需要默认的FIELD策略,该策略将直接访问您的Venue字段。 Parceler不使用@SerializedName注释。

这应该是Venue类的合理配置:

@Parcel
public class Venue {
    String venueID;
    String venueName;
    String venueUrl;
}