summaryrefslogtreecommitdiff
path: root/integration-tests/TestApp/app
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2015-06-18 17:24:17 -0700
committerYigit Boyar <yboyar@google.com>2015-06-22 11:35:57 -0700
commitd37b47419005587c52ca4c099432327b7f06478d (patch)
tree02474cf3864603ba20a5da4cceb13b63905c7688 /integration-tests/TestApp/app
parent2ac58b34e5200a34b0ba63884c375a68c9a84303 (diff)
downloaddata-binding-d37b47419005587c52ca4c099432327b7f06478d.tar.gz
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
Diffstat (limited to 'integration-tests/TestApp/app')
-rw-r--r--integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ObservableFieldTest.java15
-rw-r--r--integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/ObservableFieldBindingObject.java77
-rw-r--r--integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml12
3 files changed, 104 insertions, 0 deletions
diff --git a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ObservableFieldTest.java b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ObservableFieldTest.java
index f8130ba7..160d5c42 100644
--- a/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ObservableFieldTest.java
+++ b/integration-tests/TestApp/app/src/androidTestApi7/java/android/databinding/testapp/ObservableFieldTest.java
@@ -137,4 +137,19 @@ public class ObservableFieldTest extends BaseDataBinderTest<ObservableFieldTestB
assertEquals("World", view.getText());
}
+
+ @UiThreadTest
+ public void testParcelable() {
+ TextView x = mBinder.pFieldx;
+ TextView y = mBinder.pFieldy;
+ assertEquals(x.getText().toString(), String.valueOf(mObj.pField.get().getX()));
+ assertEquals(y.getText().toString(), mObj.pField.get().getY());
+ ObservableFieldBindingObject.MyParcelable p2 =
+ new ObservableFieldBindingObject.MyParcelable(7, "updated");
+ mObj.pField.set(p2);
+ mBinder.executePendingBindings();
+
+ assertEquals(x.getText().toString(), String.valueOf(mObj.pField.get().getX()));
+ assertEquals(y.getText().toString(), mObj.pField.get().getY());
+ }
}
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<MyParcelable> pField;
public final ObservableField<String> 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<MyParcelable> CREATOR
+ = new Parcelable.Creator<MyParcelable>() {
+
+ @Override
+ public MyParcelable createFromParcel(Parcel source) {
+ return new MyParcelable(source.readInt(), source.readString());
+ }
+
+ @Override
+ public MyParcelable[] newArray(int size) {
+ return new MyParcelable[size];
+ }
+ };
}
}
diff --git a/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml b/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
index 6a1d1f7c..032f9877 100644
--- a/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
+++ b/integration-tests/TestApp/app/src/main/res/layout/observable_field_test.xml
@@ -64,5 +64,17 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{obj.oField}"/>
+
+ <TextView
+ android:id="@+id/pFieldx"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text='@{""+obj.pField.x}'/>
+
+ <TextView
+ android:id="@+id/pFieldy"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@{obj.pField.y}"/>
</LinearLayout>
</layout> \ No newline at end of file