diff options
Diffstat (limited to 'extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java')
-rw-r--r-- | extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java index 17e53cdc..612b3203 100644 --- a/extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java +++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/NumberPickerBindingAdapter.java @@ -15,14 +15,49 @@ */ package android.databinding.adapters; +import android.databinding.BindingAdapter; import android.databinding.BindingMethod; import android.databinding.BindingMethods; +import android.databinding.InverseBindingListener; +import android.databinding.InverseBindingMethod; +import android.databinding.InverseBindingMethods; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.NumberPicker; +import android.widget.NumberPicker.OnValueChangeListener; @BindingMethods({ @BindingMethod(type = NumberPicker.class, attribute = "android:format", method = "setFormatter"), @BindingMethod(type = NumberPicker.class, attribute = "android:onScrollStateChange", method = "setOnScrollListener"), - @BindingMethod(type = NumberPicker.class, attribute = "android:onValueChange", method = "setOnValueChangedListener"), +}) +@InverseBindingMethods({ + @InverseBindingMethod(type = NumberPicker.class, attribute = "android:value"), }) public class NumberPickerBindingAdapter { + + @BindingAdapter("android:value") + public static void setValue(NumberPicker view, int value) { + if (view.getValue() != value) { + view.setValue(value); + } + } + + @BindingAdapter(value = {"android:onValueChange", "android:valueAttrChanged"}, + requireAll = false) + public static void setListeners(NumberPicker view, final OnValueChangeListener listener, + final InverseBindingListener attrChange) { + if (attrChange == null) { + view.setOnValueChangedListener(listener); + } else { + view.setOnValueChangedListener(new OnValueChangeListener() { + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + if (listener != null) { + listener.onValueChange(picker, oldVal, newVal); + } + attrChange.onChange(); + } + }); + } + } } |