1716ba89e7f459f49ea85070d4710c1d79d715298George Mount/* 2716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Copyright (C) 2015 The Android Open Source Project 3716ba89e7f459f49ea85070d4710c1d79d715298George Mount * 4716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Licensed under the Apache License, Version 2.0 (the "License"); 5716ba89e7f459f49ea85070d4710c1d79d715298George Mount * you may not use this file except in compliance with the License. 6716ba89e7f459f49ea85070d4710c1d79d715298George Mount * You may obtain a copy of the License at 7716ba89e7f459f49ea85070d4710c1d79d715298George Mount * 8716ba89e7f459f49ea85070d4710c1d79d715298George Mount * http://www.apache.org/licenses/LICENSE-2.0 9716ba89e7f459f49ea85070d4710c1d79d715298George Mount * 10716ba89e7f459f49ea85070d4710c1d79d715298George Mount * Unless required by applicable law or agreed to in writing, software 11716ba89e7f459f49ea85070d4710c1d79d715298George Mount * distributed under the License is distributed on an "AS IS" BASIS, 12716ba89e7f459f49ea85070d4710c1d79d715298George Mount * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13716ba89e7f459f49ea85070d4710c1d79d715298George Mount * See the License for the specific language governing permissions and 14716ba89e7f459f49ea85070d4710c1d79d715298George Mount * limitations under the License. 15716ba89e7f459f49ea85070d4710c1d79d715298George Mount */ 16716ba89e7f459f49ea85070d4710c1d79d715298George Mountpackage android.databinding.adapters; 17716ba89e7f459f49ea85070d4710c1d79d715298George Mount 183b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.BindingAdapter; 193b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingAdapter; 203b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.databinding.InverseBindingListener; 21716ba89e7f459f49ea85070d4710c1d79d715298George Mountimport android.widget.TabHost; 223b920788e90bb0abe615a5d5c899915f0014444bGeorge Mountimport android.widget.TabHost.OnTabChangeListener; 23716ba89e7f459f49ea85070d4710c1d79d715298George Mount 24716ba89e7f459f49ea85070d4710c1d79d715298George Mountpublic class TabHostBindingAdapter { 253b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 263b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @InverseBindingAdapter(attribute = "android:currentTab") 273b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static int getCurrentTab(TabHost view) { 283b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount return view.getCurrentTab(); 293b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 303b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 313b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @InverseBindingAdapter(attribute = "android:currentTab") 323b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static String getCurrentTabTag(TabHost view) { 333b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount return view.getCurrentTabTag(); 343b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 353b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 363b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @BindingAdapter("android:currentTab") 373b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static void setCurrentTab(TabHost view, int tab) { 383b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (view.getCurrentTab() != tab) { 393b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setCurrentTab(tab); 403b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 413b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 423b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 433b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @BindingAdapter("android:currentTab") 443b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static void setCurrentTabTag(TabHost view, String tabTag) { 453b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (view.getCurrentTabTag() != tabTag) { 463b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setCurrentTabByTag(tabTag); 473b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 483b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 493b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount 503b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @BindingAdapter(value = {"android:onTabChanged", "android:currentTabAttrChanged"}, 513b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount requireAll = false) 523b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public static void setListeners(TabHost view, final OnTabChangeListener listener, 533b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount final InverseBindingListener attrChange) { 543b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (attrChange == null) { 553b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setOnTabChangedListener(listener); 563b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } else { 573b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount view.setOnTabChangedListener(new OnTabChangeListener() { 583b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount @Override 593b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount public void onTabChanged(String tabId) { 603b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount if (listener != null) { 613b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount listener.onTabChanged(tabId); 623b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 633b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount attrChange.onChange(); 643b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 653b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount }); 663b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 673b920788e90bb0abe615a5d5c899915f0014444bGeorge Mount } 68716ba89e7f459f49ea85070d4710c1d79d715298George Mount} 69