summaryrefslogtreecommitdiff
path: root/extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java')
-rw-r--r--extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java36
1 files changed, 32 insertions, 4 deletions
diff --git a/extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java b/extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java
index 5e49c72d..4896df08 100644
--- a/extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java
+++ b/extensions/baseAdapters/src/main/java/android/databinding/adapters/RatingBarBindingAdapter.java
@@ -15,12 +15,40 @@
*/
package android.databinding.adapters;
-import android.databinding.BindingMethod;
-import android.databinding.BindingMethods;
+import android.databinding.BindingAdapter;
+import android.databinding.InverseBindingListener;
+import android.databinding.InverseBindingMethod;
+import android.databinding.InverseBindingMethods;
import android.widget.RatingBar;
+import android.widget.RatingBar.OnRatingBarChangeListener;
-@BindingMethods({
- @BindingMethod(type = RatingBar.class, attribute = "android:onRatingChanged", method = "setOnRatingBarChangeListener"),
+@InverseBindingMethods({
+ @InverseBindingMethod(type = RatingBar.class, attribute = "android:rating"),
})
public class RatingBarBindingAdapter {
+ @BindingAdapter("android:rating")
+ public static void setRating(RatingBar view, float rating) {
+ if (view.getRating() != rating) {
+ view.setRating(rating);
+ }
+ }
+
+ @BindingAdapter(value = {"android:onRatingChanged", "android:ratingAttrChanged"},
+ requireAll = false)
+ public static void setListeners(RatingBar view, final OnRatingBarChangeListener listener,
+ final InverseBindingListener ratingChange) {
+ if (ratingChange == null) {
+ view.setOnRatingBarChangeListener(listener);
+ } else {
+ view.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
+ @Override
+ public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) {
+ if (listener != null) {
+ listener.onRatingChanged(ratingBar, rating, fromUser);
+ }
+ ratingChange.onChange();
+ }
+ });
+ }
+ }
}