如何列出<enum> parcelable?

mva*_*caa 6 enums android bundle list parcelable

我正在尝试让我的类可以使用,但它里面有一个枚举列表.

我已经看到了如何使用单一枚举做到这一点在这里 ...

我怎么能这样做?

谢谢!;)

mva*_*caa 13

好的,我只是使用之前引用的链接中的信息解决了这个问题.

这就是我做的:

public enum Improvement {ENUM1, ENUM2, etc}

public void writeToParcel(Parcel dest, int flags) {
    ...
    List<String> improvementStrings = new ArrayList<String>();
    for (Improvement improvement : improvements) {
        improvementStrings.add(improvement.name());
    }
    dest.writeList(improvementStrings);
}

public void readFromParcel(Parcel in) {
    ...
    List<String> improvementStrings = new ArrayList<String>();
    in.readList(improvementStrings, null);
    for (String improvementString : improvementStrings) {
        improvements.add(Improvement.valueOf(improvementString));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 序列化`improvement.ordinal()`可能会更快,这是一个int,而不是`improvement.name()`.这避免了一遍又一遍地重复相同的字符串集.然后,在接收端,`Improved value = Improvement.values()[ordinal]`(你可以在局部变量中缓存`Improvement.values()`). (10认同)