Android 如何制作列表<;enum>;包裹?

Android 如何制作列表<;enum>;包裹?,android,list,enums,bundle,parcelable,Android,List,Enums,Bundle,Parcelable,我试图使我的类可以打包,但它里面有一个枚举列表 我已经看到了如何使用单个枚举执行此操作 我怎么能这样做 谢谢!;) 好的,我用前面引用的链接上的信息解决了这个问题 我就是这么做的: public enum Improvement {ENUM1, ENUM2, etc} public void writeToParcel(Parcel dest, int flags) { ... List<String> improvementStrings = new ArrayL

我试图使我的类可以打包,但它里面有一个枚举列表

我已经看到了如何使用单个枚举执行此操作

我怎么能这样做


谢谢!;)

好的,我用前面引用的链接上的信息解决了这个问题

我就是这么做的:

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));
    }
}
公共枚举改进{ENUM1、ENUM2等}
公共无效写入包裹(包裹目的地,内部标志){
...
List ImprovementString=new ArrayList();
用于(改进:改进){
improvementStrings.add(improvement.name());
}
目标编写器(改进字符串);
}
公共无效readFromParcel(地块位于中){
...
List ImprovementString=new ArrayList();
in.readList(improvementStrings,null);
用于(字符串改进字符串:改进字符串){
改进。添加(改进。值(改进字符串));
}
}

如果您可以创建一个可打包的枚举,请参阅使其与列表一起工作。序列化
improvement.ordinal()
可能会更快,它是一个int,而不是
improvement.name()
。这样可以避免重复同一组字符串。然后,在接收端,
Improvement value=Improvement.values()[ordinal]
(您可以在局部变量中缓存
Improvement.values()
)。非常好的建议,@JonO!