2016-11-08 58 views
1

在官方documentation我們看到使用ObservableParcelableString這樣的:ObservableParcelable <String>不工作

public final ObservableParcelable<String> name = new ObservableParcelable<String>(); 

但由於String沒有實現Parcelable不存在這個被編譯可能性。那麼我怎樣才能讓我的對象擴展爲BaseObservable並且有可觀察的字段並且可以同時進行分類?

+0

爲什麼你要混合'BaseObservable'和'ObservableField'(和它的兄弟姐妹)? – pskink

+0

我有擴展BaseObservable並具有ObservableField作爲字段的對象。我希望這個對象可以被parcelable,但是observablefields不可以被parcelable –

回答

0

您可以保存不僅parcelable領域,例如:

public class ViewModel extends BaseObservable implements Parcelable 
{ 
    private ObservableField<String> title = new ObservableField<>(); 
    private ObservableInt count = new ObservableInt(); 

    private ViewModel(Parcel parcel) 
    { 
     title.set(parcel.readString()); 
     count.set(parcel.readInt()); 
    } 

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

    @Override 
    public void writeToParcel(Parcel parcel, int flags) 
    { 
     parcel.writeString(title.get()); 
     parcel.writeInt(count.get()); 
    } 

    public static final Creator<ViewModel> CREATOR = new Creator<ViewModel>() 
    { 
     @Override 
     public ViewModel createFromParcel(Parcel in) 
     { 
      return new ViewModel(in); 
     } 

     @Override 
     public ViewModel[] newArray(int size) 
     { 
      return new ViewModel[size]; 
     } 
    }; 
} 

但是,如果你想與parcelable工作,你應該實現這個接口爲你的類

public class ParcelableString implements Parcelable 
{ 
    private String value; 

    /*Getter, Setter and implementation of Parcelable*/ 
}