From e9b33bac04bb1ce1444d7f1744fcec1ecd3a57da Mon Sep 17 00:00:00 2001 From: Yigit Boyar Date: Wed, 29 Apr 2015 19:49:41 -0700 Subject: Support multi-param adapters in code generation Bug: 19800022 Change-Id: I40c4ac72f24f965db12fd1c7dec6591184160ae5 --- .../testapp/adapter/MultiArgTestAdapter.java | 103 +++++++++++++++++++++ .../testapp/vo/MultiAdapterSetterObj.java | 26 ++++++ 2 files changed, 129 insertions(+) create mode 100644 integration-tests/TestApp/app/src/main/java/android/databinding/testapp/adapter/MultiArgTestAdapter.java create mode 100644 integration-tests/TestApp/app/src/main/java/android/databinding/testapp/vo/MultiAdapterSetterObj.java (limited to 'integration-tests/TestApp/app/src/main/java/android/databinding') 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) { + + } + }; +} -- cgit v1.2.3