summaryrefslogtreecommitdiff
path: root/extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java')
-rw-r--r--extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java93
1 files changed, 88 insertions, 5 deletions
diff --git a/extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java
index 3a11dab9..803342dc 100644
--- a/extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/TimePickerBindingAdapter.java
@@ -15,12 +15,95 @@
*/
package android.databinding.adapters;
-import android.databinding.BindingMethod;
-import android.databinding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.InverseBindingAdapter;
+import android.databinding.InverseBindingListener;
+import android.os.Build.VERSION;
+import android.os.Build.VERSION_CODES;
import android.widget.TimePicker;
+import android.widget.TimePicker.OnTimeChangedListener;
-@BindingMethods({
- @BindingMethod(type = TimePicker.class, attribute = "android:onTimeChanged", method = "setOnTimeChangedListener"),
-})
public class TimePickerBindingAdapter {
+
+ @SuppressWarnings("deprecation")
+ @BindingAdapter("android:hour")
+ public static void setHour(TimePicker view, int hour) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ if (view.getHour() != hour) {
+ view.setHour(hour);
+ }
+ } else {
+ if (view.getCurrentHour() != hour) {
+ view.setCurrentHour(hour);
+ }
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ @BindingAdapter("android:minute")
+ public static void setMinute(TimePicker view, int minute) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ if (view.getMinute() != minute) {
+ view.setMinute(minute);
+ }
+ } else {
+ if (view.getCurrentMinute() != minute) {
+ view.setCurrentHour(minute);
+ }
+ }
+ }
+
+ @InverseBindingAdapter(attribute = "android:hour")
+ public static int getHour(TimePicker view) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ return view.getHour();
+ } else {
+ @SuppressWarnings("deprecation")
+ Integer hour = view.getCurrentHour();
+ if (hour == null) {
+ return 0;
+ } else {
+ return hour;
+ }
+ }
+ }
+
+ @InverseBindingAdapter(attribute = "android:minute")
+ public static int getMinute(TimePicker view) {
+ if (VERSION.SDK_INT >= VERSION_CODES.M) {
+ return view.getMinute();
+ } else {
+ @SuppressWarnings("deprecation")
+ Integer minute = view.getCurrentMinute();
+ if (minute == null) {
+ return 0;
+ } else {
+ return minute;
+ }
+ }
+ }
+
+ @BindingAdapter(value = {"android:onTimeChanged", "android:hourAttrChanged",
+ "android:minuteAttrChanged"}, requireAll = false)
+ public static void setListeners(TimePicker view, final OnTimeChangedListener listener,
+ final InverseBindingListener hourChange, final InverseBindingListener minuteChange) {
+ if (hourChange == null && minuteChange == null) {
+ view.setOnTimeChangedListener(listener);
+ } else {
+ view.setOnTimeChangedListener(new OnTimeChangedListener() {
+ @Override
+ public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
+ if (listener != null) {
+ listener.onTimeChanged(view, hourOfDay, minute);
+ }
+ if (hourChange != null) {
+ hourChange.onChange();
+ }
+ if (minuteChange != null) {
+ minuteChange.onChange();
+ }
+ }
+ });
+ }
+ }
}