2016-11-08 56 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*/ 
}