2015-06-05 57 views
2

我試圖枚舉「狀態」保存到實現parcelable的自定義類。我在網上找到我怎麼能保存字符串,整數或枚舉在實現parcelable一類,但不是我怎麼能一下子節省這三樣東西。如果解決方案很明顯,我很抱歉,但我無法弄清楚。寫多個對象包裹

這裏是我的枚舉的樣子:

public enum Status { 
    INITIALIZED, UPDATED, DELETED 
} 

這是我到目前爲止有:

public class Recipe implements Parcelable{ 
private String id;//this should be an int, same problem 
private String recipeName; 
private String recipePreperation; 
private Status status; 
private final static int MAX_PREVIEW = 50; 

public Recipe(int parId, String parRecipeName, String parRecipePreperation) { 
    this.id = "" + parId; 
    this.recipeName = parRecipeName; 
    this.recipePreperation = parRecipePreperation; 
    this.status = Status.INITIALIZED; 
} 

public Recipe(Parcel in){ 
    String[] data = new String[4]; 

    in.readStringArray(data); 
    this.id = data [0]; 
    this.recipeName = data[1]; 
    this.recipePreperation = data[2]; 
    this.status = data[3];//what I intend to do, I know this is wrong 
} 

public int GetId() { 
    return Integer.parseInt(id); 
} 

public String GetRecipeName() { 
    return this.recipeName; 
} 

public void SetRecipeName(String parRecipeName) { 
    this.recipeName = parRecipeName; 
} 

public String GetRecipePreperation() { 
    return this.recipePreperation; 
} 

public void SetRecipePreperation(String parRecipePreperation) { 
    this.recipePreperation = parRecipePreperation; 
} 

public Status GetStatus() { 
    return this.status; 
} 

public void SetStatus(Status parStatus) { 
    this.status = parStatus; 
} 

public String toString() { 
    String recipe = this.recipeName + "\n" + this.recipePreperation; 
    String returnString; 
    int maxLength = MAX_PREVIEW; 

    if (recipe.length() > maxLength) { 
     returnString = recipe.substring(0, maxLength - 3) + "..."; 
    } else { 
     returnString = recipe; 
    } 

    return returnString; 
} 

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

@Override 
public void writeToParcel(Parcel dest, int arg1) { 
    dest.writeStringArray(new String [] { 
      this.id, 
      this.recipeName, 
      this.recipePreperation, 
      this.status//what I intend to do, I know this is wrong 
    }); 
} 

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { 
    public Recipe createFromParcel(Parcel in) { 
     return new Recipe(in); 
    } 

    public Recipe[] newArray(int size) { 
     return new Recipe[size]; 
    } 
}; 
} 

如何保存一個int,字符串數組和枚舉成一個實現了parcelable的類,所以它可以writeToParcel()?

回答

3

有沒有需要讀取和字符串數組寫入/。只要寫每個字符串,最後的狀態爲Serializable。這是我如何解決它。

public Recipe(Parcel in){ 
    this.id = in.readString(); 
    this.recipeName = in.readString(); 
    this.recipePreperation = in.readString(); 
    this.status = (Status) in.readSerializable(); 
} 

public void writeToParcel(Parcel dest, int arg1) { 
    dest.writeString(this.id); 
    dest.writeString(this.recipeName); 
    dest.writeString(this.recipePreperation); 
    dest.writeSerializable(this.status); 
} 
+0

謝謝!!這是我正在尋找的。它還看起來比串:) – Janneman96

+0

@ Janneman96不客氣的陣列清潔了許多。 – omainegra