2013-02-22 10 views
6

私はクラスをパーセル可能にしようとしていますが、内部に列挙型のリストがあります。リストの作成方法<enum>パーセル可能?

私はすでに、単一の列挙型hereでこれを行う方法を見てきました...

私はこれをどのように行うことができますか?

ありがとうございます! ;)

+2

あなたは[この質問](http://stackoverflow.com/questions/7042272/how-to-properly-implementを参照してください、その後、parcelable列挙型を作ることができた場合arraylistparcelable?rq = 1)を使ってリストと連動させることができます。 – Geobits

+0

ありがとう、@Geobits! – mvalencaa

答えて

12

[OK]を、私は以前に引用したリンクの情報を使用してこれを解決しました。

私がやったことだった

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)); 
    } 
} 
+10

'improvement.name()'ではなくintである 'improvement.ordinal()'を直列化する方が速いでしょう。これにより、同じ文字列を何度も何度も繰り返してしまうことを避けることができます。そして、受信側では、 'Improvement value = Improvement.values()[ordinal]'(ローカル変数に 'Improvement.values()'をキャッシュすることができます)。 –

+0

素晴らしい提案、@JonO! – mvalencaa

関連する問題