# ListenerUtil

Summary: [Ctors](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#pubctors) \| [Methods](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#inhmethods) \| [\[Expand All\]](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#)  

# ListenerUtil


`
public


class
ListenerUtil
`


`

extends `[Object](http://developer.android.com/reference/java/lang/Object.html)`


`

`


`

|---|-------------------------------------------|
| [java.lang.Object](http://developer.android.com/reference/java/lang/Object.html) ||
| ↳ | android.databinding.adapters.ListenerUtil |

<br />

*** ** * ** ***

Utility class that helps with tracking listeners for views from binding adapters.

## Summary

|                                                   ### Public constructors                                                   ||
|--------------------------------------------------------------------------------------------------------------------------|---|
| ` `[ListenerUtil](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#ListenerUtil())`() ` |

|                                                                                                                                                                                                                                              ### Public methods                                                                                                                                                                                                                                              ||
|-----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` static <T> T` | ` `[getListener](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#getListener(android.view.View, int))`(`[View](http://developer.android.com/reference/android/view/View.html)` view, int listenerResourceId) ` Returns the previous value for a listener if one was stored previously with [trackListener(View, Object, int)](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#trackListener(android.view.View, T, int)) |
| ` static <T> T` | ` `[trackListener](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#trackListener(android.view.View, T, int))`(`[View](http://developer.android.com/reference/android/view/View.html)` view, T listener, int listenerResourceId) ` This method tracks listeners for a View.                                                                                                                                                                                |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#)From class ` `[java.lang.Object](http://developer.android.com/reference/java/lang/Object.html)` ` |------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------| | ` `[Object](http://developer.android.com/reference/java/lang/Object.html)          | ` clone() `                                                                               | | ` boolean`                                                                         | ` equals(`[Object](http://developer.android.com/reference/java/lang/Object.html)` arg0) ` | | ` void`                                                                            | ` finalize() `                                                                            | | ` final `[Class](http://developer.android.com/reference/java/lang/Class.html)`<?>` | ` getClass() `                                                                            | | ` int`                                                                             | ` hashCode() `                                                                            | | ` final void`                                                                      | ` notify() `                                                                              | | ` final void`                                                                      | ` notifyAll() `                                                                           | | ` `[String](http://developer.android.com/reference/java/lang/String.html)          | ` toString() `                                                                            | | ` final void`                                                                      | ` wait(long arg0, int arg1) `                                                             | | ` final void`                                                                      | ` wait(long arg0) `                                                                       | | ` final void`                                                                      | ` wait() `                                                                                | ||

## Public constructors

### ListenerUtil

```
ListenerUtil ()
```

<br />

<br />

## Public methods

### getListener

```
T getListener (View view, 
                int listenerResourceId)
```

Returns the previous value for a listener if one was stored previously with
[trackListener(View, Object, int)](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#trackListener(android.view.View, T, int))

<br />

|                                                                                                                         Parameters                                                                                                                          ||
|----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `view`               | `View`: The View to check for a listener previously stored with [trackListener(View, Object, int)](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil#trackListener(android.view.View, T, int)) <br /> |
| `listenerResourceId` | `int`: A unique resource ID associated with the listener type. <br />                                                                                                                                                                 |

|                                                        Returns                                                         ||
|-----|-------------------------------------------------------------------------------------------------------------------|
| `T` | The previously tracked listener. This will be null if the View did not have a previously-tracked listener. <br /> |

### trackListener

```
T trackListener (View view, 
                T listener, 
                int listenerResourceId)
```

This method tracks listeners for a View. Only one listener per listenerResourceId
can be tracked at a time. This is useful for add\*Listener and remove\*Listener methods
when used with BindingAdapters. This guarantees not to leak the listener or the View,
so will not keep a strong reference to either.

Example usage:  

    @BindingAdapter("onFoo")
     public static void addFooListener(MyView view, OnFooListener listener) {
         OnFooListener oldValue = ListenerUtil.trackListener(view, listener, R.id.fooListener);
         if (oldValue != null) {
             view.removeOnFooListener(oldValue);
         }
         if (listener != null) {
             view.addOnFooListener(listener);
         }
     }

<br />

<br />

|                                                   Parameters                                                   ||
|----------------------|------------------------------------------------------------------------------------------|
| `view`               | `View`: The View that will have this listener <br />                                     |
| `listener`           | `T`: The listener to keep track of. May be null if the listener is being removed. <br /> |
| `listenerResourceId` | `int`: A unique resource ID associated with the listener type. <br />                    |

|                                                        Returns                                                         ||
|-----|-------------------------------------------------------------------------------------------------------------------|
| `T` | The previously tracked listener. This will be null if the View did not have a previously-tracked listener. <br /> |

-

  ## Classes

  - [Converters](https://developer.android.com/reference/android/databinding/adapters/Converters)
  - [ListenerUtil](https://developer.android.com/reference/android/databinding/adapters/ListenerUtil)