1e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar/* 2e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Copyright (C) 2015 The Android Open Source Project 3e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 4e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * you may not use this file except in compliance with the License. 5e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * You may obtain a copy of the License at 6e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 7e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * Unless required by applicable law or agreed to in writing, software 8e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 9e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * See the License for the specific language governing permissions and 11e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar * limitations under the License. 12e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar */ 13e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 14e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarpackage android.databinding.testapp.adapter; 15e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 16e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 17e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.BaseObservable; 18e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.Bindable; 19e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.BindingAdapter; 20e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.view.View; 21e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.databinding.testapp.BR; 22e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarimport android.widget.TextView; 23e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 24e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyarpublic class MultiArgTestAdapter { 25e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 26e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static String join(BaseMultiBindingClass... classes) { 27e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar StringBuilder sb = new StringBuilder(); 28e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar for(BaseMultiBindingClass instance : classes) { 29e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar sb.append(instance == null ? "??" : instance.getValue()); 30e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 31e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar return sb.toString(); 32e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 33e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 34e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static String join(String... strings) { 35e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar StringBuilder sb = new StringBuilder(); 36e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar for(String str : strings) { 37e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar sb.append(str == null ? "??" : str); 38e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 39e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar return sb.toString(); 40e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 41e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 42e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 4310960eb5f73fd587c2f8d18cfc61873c04017512George Mount @BindingAdapter({"android:class1", "android:class2"}) 44e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static void setBoth(TextView view, MultiBindingClass1 class1, 45e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar MultiBindingClass2 class2) { 46e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar view.setText(join(class1, class2)); 47e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 48e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 4910960eb5f73fd587c2f8d18cfc61873c04017512George Mount @BindingAdapter({"android:class1str", "android:class2str"}) 50e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static void setBoth(TextView view, String str1, 51e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar String str2) { 52e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar view.setText(join(str1, str2)); 53e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 54e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 5510960eb5f73fd587c2f8d18cfc61873c04017512George Mount @BindingAdapter({"android:class1"}) 56e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static void setClass1(TextView view, MultiBindingClass1 class1) { 57e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar view.setText(class1.getValue()); 58e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 59e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 6010960eb5f73fd587c2f8d18cfc61873c04017512George Mount @BindingAdapter({"android:classStr"}) 61e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static void setClassStr(TextView view, String str) { 62e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar view.setText(str); 63e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 64e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 6520c7182163d99575d382e065f5a5fe45ed6b87e2George Mount @BindingAdapter("android:class2") 66e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static void setClass2(TextView view, MultiBindingClass2 class2) { 67e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar view.setText(class2.getValue()); 68e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 69e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 7020c7182163d99575d382e065f5a5fe45ed6b87e2George Mount @BindingAdapter("android:val3") 7120c7182163d99575d382e065f5a5fe45ed6b87e2George Mount public static void setWithOldValue(TextView view, String oldValue, String newValue) { 7220c7182163d99575d382e065f5a5fe45ed6b87e2George Mount view.setText(String.format("%s -> %s", oldValue, newValue)); 7320c7182163d99575d382e065f5a5fe45ed6b87e2George Mount } 7420c7182163d99575d382e065f5a5fe45ed6b87e2George Mount 7520c7182163d99575d382e065f5a5fe45ed6b87e2George Mount @BindingAdapter({"android:val3", "android:val4"}) 7620c7182163d99575d382e065f5a5fe45ed6b87e2George Mount public static void set2WithOldValues(TextView view, String oldValue1, String oldValue2, 7720c7182163d99575d382e065f5a5fe45ed6b87e2George Mount String newValue1, String newValue2) { 7820c7182163d99575d382e065f5a5fe45ed6b87e2George Mount view.setText(String.format("%s, %s -> %s, %s", oldValue1, oldValue2, newValue1, newValue2)); 7920c7182163d99575d382e065f5a5fe45ed6b87e2George Mount } 8020c7182163d99575d382e065f5a5fe45ed6b87e2George Mount 81e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static class MultiBindingClass1 extends BaseMultiBindingClass { 82e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 83e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 84e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 85e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static class MultiBindingClass2 extends BaseMultiBindingClass { 86e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 87e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 88e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 89e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public static class BaseMultiBindingClass extends BaseObservable { 90e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar View mSetOn; 91e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar @Bindable 92e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar String mValue; 93e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public View getSetOn() { 94e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar return mSetOn; 95e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 96e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 97e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public String getValue() { 98e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar return mValue; 99e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 100e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 101e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public void setValue(String value, boolean notify) { 102e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mValue = value; 103e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar if (notify) { 104e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar notifyPropertyChanged(BR.value); 105e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 106e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 107e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar 108e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar public void clear() { 109e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar mSetOn = null; 110e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 111e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar } 112e9b33bac04bb1ce1444d7f1744fcec1ecd3a57daYigit Boyar} 113