Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.

InverseBindingMethod

public abstract @interface InverseBindingMethod
implements Annotation

android.databinding.InverseBindingMethod


InverseBindingMethod is used to identify how to listen for changes to a View property and which getter method to call. InverseBindingMethod should be associated with any class as part of InverseBindingMethods.

 @InverseBindingMethods({@InverseBindingMethod(
     type = android.widget.TextView.class,
     attribute = "android:text",
     event = "android:textAttrChanged",
     method = "getText")})
 public class MyTextViewBindingAdapters { ... }
 

method is optional. If it isn't provided, the attribute name is used to find the method name, either prefixing with "is" or "get". For the attribute android:text, data binding will search for a public CharSequence getText() method on TextView.

event is optional. If it isn't provided, the event name is assigned the attribute name suffixed with AttrChanged. For the android:text attribute, the default event name would be android:textAttrChanged. The event should be set using a BindingAdapter. For example:

 @BindingAdapter(value = {"android:beforeTextChanged", "android:onTextChanged",
                          "android:afterTextChanged", "android:textAttrChanged"},
                          requireAll = false)
 public static void setTextWatcher(TextView view, final BeforeTextChanged before,
                                   final OnTextChanged on, final AfterTextChanged after,
                                   final InverseBindingListener textAttrChanged) {
     TextWatcher newValue = new TextWatcher() {
         ...
         @Override
         public void onTextChanged(CharSequence s, int start, int before, int count) {
             if (on != null) {
                 on.onTextChanged(s, start, before, count);
             }
             if (textAttrChanged != null) {
                 textAttrChanged.onChange();
             }
         }
     }
     TextWatcher oldValue = ListenerUtil.trackListener(view, newValue, R.id.textWatcher);
     if (oldValue != null) {
         view.removeTextChangedListener(oldValue);
     }
     view.addTextChangedListener(newValue);
 }
 

Summary

Public methods

String attribute()

The attribute that supports two-way binding.

String event()

The event used to notify the data binding system that the attribute value has changed.

String method()

The getter method to retrieve the attribute value from the View.

Class type()

The View type that is associated with the attribute.

Inherited methods

From interface java.lang.annotation.Annotation

Public methods

attribute

String attribute ()

The attribute that supports two-way binding.

Returns
String

event

String event ()

The event used to notify the data binding system that the attribute value has changed. Defaults to attribute() + "AttrChanged"

Returns
String

method

String method ()

The getter method to retrieve the attribute value from the View. The default is the bean method name based on the attribute name.

Returns
String

type

Class type ()

The View type that is associated with the attribute.

Returns
Class