ObservableParcelable <string>不起作用

时间:2016-11-08 10:16:38

标签: android android-databinding

在官方documentation中,我们看到ObservableParcelable使用String,如下所示:

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

但是由于String没有实现Parcelable,因此不可能编译它。那么如何让我的对象扩展BaseObservable并且具有可观察的字段并且可以同时进行分类?

1 个答案:

答案 0 :(得分:0)

您不仅可以保存可分割的字段,例如:

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*/
}