Annotation Type InverseBindingMethod


  • @Target(ANNOTATION_TYPE)
    public @interface 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 android.widget.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);
     }
     
    See Also:
    InverseBindingAdapter, InverseBindingListener
    • Required Element Summary

      Required Elements 
      Modifier and Type Required Element Description
      java.lang.String attribute
      The attribute that supports two-way binding.
      java.lang.Class type
      The View type that is associated with the attribute.
    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      java.lang.String event
      The event used to notify the data binding system that the attribute value has changed.
      java.lang.String method
      The getter method to retrieve the attribute value from the View.
    • Element Detail

      • type

        java.lang.Class type
        The View type that is associated with the attribute.
      • attribute

        java.lang.String attribute
        The attribute that supports two-way binding.
      • event

        java.lang.String event
        The event used to notify the data binding system that the attribute value has changed. Defaults to attribute() + "AttrChanged"
        Default:
        ""
      • method

        java.lang.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.
        Default:
        ""