# AbstractDetailsDescriptionPresenter

Artifact: [androidx.leanback:leanback](https://developer.android.com/jetpack/androidx/releases/leanback) [View Source](https://cs.android.com/search?q=file:androidx/leanback/widget/AbstractDetailsDescriptionPresenter.java+class:androidx.leanback.widget.AbstractDetailsDescriptionPresenter) Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

*** ** * ** ***

<br />

```
public abstract class AbstractDetailsDescriptionPresenter extends Presenter
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.leanback.widget.Presenter](https://developer.android.com/reference/androidx/leanback/widget/Presenter) ||
|   | ↳ | [androidx.leanback.widget.AbstractDetailsDescriptionPresenter](https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter) |

*** ** * ** ***

An abstract `https://developer.android.com/reference/androidx/leanback/widget/Presenter` for rendering a detailed description of an item. Typically this Presenter will be used in a `https://developer.android.com/reference/androidx/leanback/widget/FullWidthDetailsOverviewRowPresenter` or `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRowPresenter`.

Subclasses must override `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder,java.lang.Object)` to implement the data binding for this Presenter.

## Summary

| ### Nested types |
|---|
| `public class https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter.ViewHolder extends https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder` The ViewHolder for the `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter`. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#AbstractDetailsDescriptionPresenter()()` |

| ### Public methods |
|---|---|
| `final void` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder, @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html item )` Binds a `https://developer.android.com/reference/android/view/View.html` to an item. |
| `final @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter.ViewHolder` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onCreateViewHolder(android.view.ViewGroup)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/view/ViewGroup.html parent)` Creates a new `https://developer.android.com/reference/android/view/View.html`. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder)` Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder)` Called when a view created by this presenter has been attached to a window. |
| `void` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder)` Called when a view created by this presenter has been detached from its window. |

| ### Protected methods |
|---|---|
| `abstract void` | `https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter#onBindDescription(androidx.leanback.widget.AbstractDetailsDescriptionPresenter.ViewHolder,java.lang.Object)( @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter.ViewHolder vh, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Object.html item )` Binds the data from the item to the ViewHolder. |

### Inherited methods

From [androidx.leanback.widget.FacetProvider](https://developer.android.com/reference/androidx/leanback/widget/FacetProvider) `abstract @https://jspecify.dev/docs/api/org/jspecify/annotations/Nullable.html https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/androidx/leanback/widget/FacetProvider#getFacet(java.lang.Class<?>)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass)`

Queries optional implemented facet.
From [androidx.leanback.widget.Presenter](https://developer.android.com/reference/androidx/leanback/widget/Presenter) `static void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#cancelAnimationsRecursive(android.view.View)(https://developer.android.com/reference/android/view/View.html view)`

Utility method for removing all running animations on a view.
`final https://developer.android.com/reference/java/lang/Object.html` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#getFacet(java.lang.Class<?>)(https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass)`

Queries optional implemented facet.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object,java.util.List<java.lang.Object>)(

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder viewHolder,

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Object.html item,

@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/util/List.html<https://developer.android.com/reference/java/lang/Object.html> payloads

)`

Binds a `https://developer.android.com/reference/android/view/View.html` to an item with a list of payloads.
`final void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#setFacet(java.lang.Class<?>,java.lang.Object)(https://developer.android.com/reference/java/lang/Class.html<@https://developer.android.com/reference/androidx/annotation/NonNull ?> facetClass, https://developer.android.com/reference/java/lang/Object.html facetImpl)`

Sets dynamic implemented facet in addition to basic Presenter functions.
`void` `https://developer.android.com/reference/androidx/leanback/widget/Presenter#setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder,android.view.View.OnClickListener)(

https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder,

https://developer.android.com/reference/android/view/View.OnClickListener.html listener

)`

Called to set a click listener for the given view holder.

## Public constructors

### AbstractDetailsDescriptionPresenter

Added in 1.1.0

```
public AbstractDetailsDescriptionPresenter()
```

## Public methods

### onBindViewHolder

```
public final void onBindViewHolder(
    @NonNull Presenter.ViewHolder viewHolder,
    @Nullable Object item
)
```

Binds a `https://developer.android.com/reference/android/view/View.html` to an item.

### onCreateViewHolder

```
public final @NonNull AbstractDetailsDescriptionPresenter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent)
```

Creates a new `https://developer.android.com/reference/android/view/View.html`.

### onUnbindViewHolder

```
public void onUnbindViewHolder(@NonNull Presenter.ViewHolder viewHolder)
```

Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item. Any expensive references may be released here, and any fields that are not bound for every item should be cleared here.

### onViewAttachedToWindow

```
public void onViewAttachedToWindow(@NonNull Presenter.ViewHolder holder)
```

Called when a view created by this presenter has been attached to a window.

This can be used as a reasonable signal that the view is about to be seen by the user. If the adapter previously freed any resources in `https://developer.android.com/reference/androidx/leanback/widget/Presenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)` those resources should be restored here.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder` | Holder of the view being attached |

### onViewDetachedFromWindow

```
public void onViewDetachedFromWindow(@NonNull Presenter.ViewHolder holder)
```

Called when a view created by this presenter has been detached from its window.

Becoming detached from the window is not necessarily a permanent condition; the consumer of an presenter's views may choose to cache views offscreen while they are not visible, attaching and detaching them as appropriate.
Any view property animations should be cancelled here or the view may fail to be recycled.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/Presenter.ViewHolder holder` | Holder of the view being detached |

## Protected methods

### onBindDescription

Added in [1.1.0](https://developer.android.com/jetpack/androidx/releases/leanback#1.1.0)

```
protected abstract void onBindDescription(
    @NonNull AbstractDetailsDescriptionPresenter.ViewHolder vh,
    @NonNull Object item
)
```

Binds the data from the item to the ViewHolder. The item is typically associated with a `https://developer.android.com/reference/androidx/leanback/widget/DetailsOverviewRow` or `https://developer.android.com/reference/androidx/leanback/widget/PlaybackControlsRow`.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/androidx/leanback/widget/AbstractDetailsDescriptionPresenter.ViewHolder vh` | The ViewHolder for this details description view. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/java/lang/Object.html item` | The item being presented. |