1612997fe2e41366573855f56898b27d4c8787244George Mount/* 2612997fe2e41366573855f56898b27d4c8787244George Mount * Copyright (C) 2015 The Android Open Source Project 3612997fe2e41366573855f56898b27d4c8787244George Mount * 4612997fe2e41366573855f56898b27d4c8787244George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5612997fe2e41366573855f56898b27d4c8787244George Mount * you may not use this file except in compliance with the License. 6612997fe2e41366573855f56898b27d4c8787244George Mount * You may obtain a copy of the License at 7612997fe2e41366573855f56898b27d4c8787244George Mount * 8612997fe2e41366573855f56898b27d4c8787244George Mount * http://www.apache.org/licenses/LICENSE-2.0 9612997fe2e41366573855f56898b27d4c8787244George Mount * 10612997fe2e41366573855f56898b27d4c8787244George Mount * Unless required by applicable law or agreed to in writing, software 11612997fe2e41366573855f56898b27d4c8787244George Mount * distributed under the License is distributed on an "AS IS" BASIS, 12612997fe2e41366573855f56898b27d4c8787244George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13612997fe2e41366573855f56898b27d4c8787244George Mount * See the License for the specific language governing permissions and 14612997fe2e41366573855f56898b27d4c8787244George Mount * limitations under the License. 15612997fe2e41366573855f56898b27d4c8787244George Mount */ 16fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountpackage android.databinding.adapters; 17612997fe2e41366573855f56898b27d4c8787244George Mount 18716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.databinding.BindingAdapter; 19fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.BindingMethod; 20fead9ca09b117136b35bc5bf137340a754f9edddGeorge Mountimport android.databinding.BindingMethods; 213b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingListener; 223b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingMethod; 233b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingMethods; 24716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.widget.CompoundButton; 25716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.widget.CompoundButton.OnCheckedChangeListener; 263561e3e665698843b1c664385a842e779198960bGeorge Mount 273561e3e665698843b1c664385a842e779198960bGeorge Mount@BindingMethods({ 28716ba89e7f459f49ea85070d4710c1d79d715298George Mount @BindingMethod(type = CompoundButton.class, attribute = "android:buttonTint", method = "setButtonTintList"), 29716ba89e7f459f49ea85070d4710c1d79d715298George Mount @BindingMethod(type = CompoundButton.class, attribute = "android:onCheckedChanged", method = "setOnCheckedChangeListener"), 303561e3e665698843b1c664385a842e779198960bGeorge Mount}) 313b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount@InverseBindingMethods({ 323b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @InverseBindingMethod(type = CompoundButton.class, attribute = "android:checked"), 333b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount}) 343561e3e665698843b1c664385a842e779198960bGeorge Mountpublic class CompoundButtonBindingAdapter { 353b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 363b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @BindingAdapter("android:checked") 373b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static void setChecked(CompoundButton view, boolean checked) { 383b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (view.isChecked() != checked) { 393b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setChecked(checked); 403b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 413b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 423b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 433b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @BindingAdapter(value = {"android:onCheckedChanged", "android:checkedAttrChanged"}, 443b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount requireAll = false) 453b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static void setListeners(CompoundButton view, final OnCheckedChangeListener listener, 463b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount final InverseBindingListener attrChange) { 473b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (attrChange == null) { 483b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setOnCheckedChangeListener(listener); 493b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } else { 503b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setOnCheckedChangeListener(new OnCheckedChangeListener() { 513b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @Override 523b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 533b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (listener != null) { 543b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount listener.onCheckedChanged(buttonView, isChecked); 553b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 563b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount attrChange.onChange(); 573b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 583b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount }); 593b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 603b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 613b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 62612997fe2e41366573855f56898b27d4c8787244George Mount} 63