From d37b47419005587c52ca4c099432327b7f06478d Mon Sep 17 00:00:00 2001 From: Yigit Boyar Date: Thu, 18 Jun 2015 17:24:17 -0700 Subject: Make observables parcelable We got some feedback where people want to keep their View presenter classes parcelable. This CL makes observables parcelable and their lists transient to allow this. Bug: 21785040 Change-Id: I76adc7d7ca3876c83fd8749f6dbcf02a926c97c2 --- .../testapp/vo/ObservableFieldBindingObject.java | 77 ++++++++++++++++++++++ 1 file changed, 77 insertions(+) (limited to 'integration-tests/TestApp/app/src/main/java/android/databinding/testapp') diff --git a/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java index 87127fef..5f1fcb38 100644 --- a/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java +++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java @@ -23,7 +23,10 @@ import android.databinding.ObservableField; import android.databinding.ObservableFloat; import android.databinding.ObservableInt; import android.databinding.ObservableLong; +import android.databinding.ObservableParcelable; import android.databinding.ObservableShort; +import android.os.Parcel; +import android.os.Parcelable; public class ObservableFieldBindingObject { public final ObservableBoolean bField = new ObservableBoolean(); @@ -34,9 +37,83 @@ public class ObservableFieldBindingObject { public final ObservableLong lField = new ObservableLong(); public final ObservableFloat fField = new ObservableFloat(); public final ObservableDouble dField = new ObservableDouble(); + public final ObservableParcelable pField; public final ObservableField oField = new ObservableField<>(); public ObservableFieldBindingObject() { oField.set("Hello"); + MyParcelable myParcelable = new MyParcelable(3, "abc"); + pField = new ObservableParcelable(myParcelable); + } + + public static class MyParcelable implements Parcelable { + int x; + String y; + + public MyParcelable(int x, String y) { + this.x = x; + this.y = y; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeInt(x); + dest.writeString(y); + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + + MyParcelable that = (MyParcelable) o; + + if (x != that.x) { + return false; + } + if (y != null ? !y.equals(that.y) : that.y != null) { + return false; + } + + return true; + } + + public int getX() { + return x; + } + + public String getY() { + return y; + } + + @Override + public int hashCode() { + int result = x; + result = 31 * result + (y != null ? y.hashCode() : 0); + return result; + } + + public static final Parcelable.Creator CREATOR + = new Parcelable.Creator() { + + @Override + public MyParcelable createFromParcel(Parcel source) { + return new MyParcelable(source.readInt(), source.readString()); + } + + @Override + public MyParcelable[] newArray(int size) { + return new MyParcelable[size]; + } + }; } } -- cgit v1.2.3