summaryrefslogtreecommitdiff
path: root/integration-tests/TestApp/app/src/main
diff options
context:
space:
mode:
authorYigit Boyar <yboyar@google.com>2015-04-29 19:49:41 -0700
committerYigit Boyar <yboyar@google.com>2015-04-30 15:32:34 -0700
commite9b33bac04bb1ce1444d7f1744fcec1ecd3a57da (patch)
treedac2454bf8fae14152c532d36300407dfbf330f1 /integration-tests/TestApp/app/src/main
parentcffffe30fe53455856d3d41724b9d5dd21aebf9a (diff)
downloaddata-binding-e9b33bac04bb1ce1444d7f1744fcec1ecd3a57da.tar.gz
Support multi-param adapters in code generation
Bug: 19800022 Change-Id: I40c4ac72f24f965db12fd1c7dec6591184160ae5
Diffstat (limited to 'integration-tests/TestApp/app/src/main')
-rw-r--r--integration-tests/TestApp/app/src/main/java/android/databinding/testapp/adapter/MultiArgTestAdapter.java103
-rw-r--r--integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/MultiAdapterSetterObj.java26
-rw-r--r--integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_evaluation_test.xml50
-rw-r--r--integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_test.xml66
4 files changed, 245 insertions, 0 deletions
diff --git a/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/adapter/MultiArgTestAdapter.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/adapter/MultiArgTestAdapter.java
new file mode 100644
index 00000000..a2702798
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/adapter/MultiArgTestAdapter.java
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.databinding.testapp.adapter;
+
+
+import android.databinding.BaseObservable;
+import android.databinding.Bindable;
+import android.databinding.BindingAdapter;
+import android.view.View;
+import android.databinding.testapp.BR;
+import android.widget.TextView;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class MultiArgTestAdapter {
+
+ public static String join(BaseMultiBindingClass... classes) {
+ StringBuilder sb = new StringBuilder();
+ for(BaseMultiBindingClass instance : classes) {
+ sb.append(instance == null ? "??" : instance.getValue());
+ }
+ return sb.toString();
+ }
+
+ public static String join(String... strings) {
+ StringBuilder sb = new StringBuilder();
+ for(String str : strings) {
+ sb.append(str == null ? "??" : str);
+ }
+ return sb.toString();
+
+ }
+
+ @BindingAdapter(attributes={"android:class1", "android:class2"})
+ public static void setBoth(TextView view, MultiBindingClass1 class1,
+ MultiBindingClass2 class2) {
+ view.setText(join(class1, class2));
+ }
+
+ @BindingAdapter(attributes={"android:class1str", "android:class2str"})
+ public static void setBoth(TextView view, String str1,
+ String str2) {
+ view.setText(join(str1, str2));
+ }
+
+ @BindingAdapter(attributes={"android:class1"})
+ public static void setClass1(TextView view, MultiBindingClass1 class1) {
+ view.setText(class1.getValue());
+ }
+
+ @BindingAdapter(attributes={"android:classStr"})
+ public static void setClassStr(TextView view, String str) {
+ view.setText(str);
+ }
+
+ @BindingAdapter(attributes={"android:class2"})
+ public static void setClass2(TextView view, MultiBindingClass2 class2) {
+ view.setText(class2.getValue());
+ }
+
+ public static class MultiBindingClass1 extends BaseMultiBindingClass {
+
+ }
+
+ public static class MultiBindingClass2 extends BaseMultiBindingClass {
+
+ }
+
+ public static class BaseMultiBindingClass extends BaseObservable {
+ View mSetOn;
+ @Bindable
+ String mValue;
+ public View getSetOn() {
+ return mSetOn;
+ }
+
+ public String getValue() {
+ return mValue;
+ }
+
+ public void setValue(String value, boolean notify) {
+ mValue = value;
+ if (notify) {
+ notifyPropertyChanged(BR.value);
+ }
+ }
+
+ public void clear() {
+ mSetOn = null;
+ }
+ }
+}
diff --git a/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/MultiAdapterSetterObj.java b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/MultiAdapterSetterObj.java
new file mode 100644
index 00000000..c23a41a8
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/MultiAdapterSetterObj.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.databinding.testapp.vo;
+
+import android.view.View;
+
+public class MultiAdapterSetterObj {
+ public boolean isClickable;
+ public View.OnClickListener onClickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+
+ }
+ };
+}
diff --git a/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_evaluation_test.xml b/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_evaluation_test.xml
new file mode 100644
index 00000000..2fbe6a73
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_evaluation_test.xml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2015 The Android Open Source Project
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:bind="http://schemas.android.com/apk/res-auto">
+
+ <data>
+
+ <variable
+ name="obj1"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass1" />
+
+ <variable
+ name="obj2"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass2" />
+ </data>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/merged"
+ android:class1str="@{obj1.value}"
+ android:class2str="@{obj2.value}" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/view2"
+ android:text="@{obj2.value}" />
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/view2text"
+ android:classStr="@{obj2.value}" />
+ </LinearLayout>
+</layout> \ No newline at end of file
diff --git a/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_test.xml b/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_test.xml
new file mode 100644
index 00000000..fd8d4411
--- /dev/null
+++ b/integration-tests/TestApp/app/src/main/res/layout/multi_arg_adapter_test.xml
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ ~ Copyright (C) 2015 The Android Open Source Project
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<layout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:bind="http://schemas.android.com/apk/res-auto">
+
+ <data>
+
+ <variable
+ name="obj1"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass1" />
+
+ <variable
+ name="obj2"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass2" />
+
+ <variable
+ name="obj3"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass1" />
+
+ <variable
+ name="obj4"
+ type="android.databinding.testapp.adapter.MultiArgTestAdapter.MultiBindingClass2" />
+ </data>
+
+ <LinearLayout
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/merged"
+ android:class1="@{obj1}"
+ android:class2="@{obj2}" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/view3"
+ android:class1="@{obj3}" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/view4"
+ android:class2="@{obj4}" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:id="@+id/view2"
+ android:class2="@{obj2}" />
+ </LinearLayout>
+</layout> \ No newline at end of file