# AbstractMediaItemPresenter

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

*** ** * ** ***

<br />

```
abstract class AbstractMediaItemPresenter : RowPresenter
```

<br />

|---|---|---|---|
| [kotlin.Any](https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html) ||||
| ↳ | [androidx.leanback.widget.Presenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter) |||
|   | ↳ | [androidx.leanback.widget.RowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter) ||
|   |   | ↳ | [androidx.leanback.widget.AbstractMediaItemPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter) |

*** ** * ** ***

Abstract `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter` class for rendering media items in a playlist format. Media item data provided for this presenter can implement the interface `https://developer.android.com/reference/kotlin/androidx/leanback/widget/MultiActionsProvider`, if the media rows wish to contain custom actions. Media items in the playlist are arranged as a vertical list with each row holding each media item's details provided by the user of this class and a set of optional custom actions. Each media item's details and actions are separately focusable. The appearance of each one of the media row components can be controlled through setting theme's attributes. Each media item row provides a view flipper for switching between different views depending on the playback state. A default layout is provided by this presenter for rendering different playback states, or a custom layout can be provided by the user by overriding the playbackMediaItemNumberViewFlipperLayout attribute in the currently specified theme. Subclasses should also override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#getMediaPlayState(java.lang.Object)` to provide the current play state of their media item model in case they wish to use different views depending on the playback state. The presenter can optionally provide line separators between media rows by setting `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#setHasMediaRowSeparator(boolean)` to true.

Subclasses must override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder,java.lang.Object)` to implement their media item model data binding to each row view.

The `https://developer.android.com/reference/kotlin/androidx/leanback/widget/OnItemViewClickedListener` and `https://developer.android.com/reference/kotlin/androidx/leanback/widget/OnItemViewSelectedListener` can be used in the same fashion to handle selection or click events on either of media details or each individual action views.

`https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaListHeaderPresenter` can be used in conjunction with this presenter in order to display a playlist with a header view.

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder : https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` The ViewHolder for the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. |

| ### Constants |
|---|---|
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#PLAY_STATE_INITIAL() = 0` Indicating that the media item is currently neither playing nor paused. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#PLAY_STATE_PAUSED() = 1` Indicating that the media item is currently paused. |
| `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#PLAY_STATE_PLAYING() = 2` Indicating that the media item is currently playing |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#AbstractMediaItemPresenter()()` Constructor used for creating an abstract media item presenter. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#AbstractMediaItemPresenter(int)(themeId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Constructor used for creating an abstract media item presenter. |

| ### Public functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter!` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#getActionPresenter()()` Return the presenter used to render a media item row actions. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#getThemeId()()` Return The resource id of the theme that defines attributes controlling the appearance of different widgets in a media item row. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#hasMediaRowSeparator()()` |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#isUsingDefaultSelectEffect()()` Returns true if this RowPresenter is using the default dimming effect. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onBindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!)` Binds the media item number view to the appropriate play state view of the media item. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onUnbindMediaPlayState(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!)` Called when the given ViewHolder wants to unbind the play state view. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#setActionPresenter(androidx.leanback.widget.Presenter)(actionPresenter: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter!)` Sets the action presenter rendering each optional custom action within each media item row. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#setBackgroundColor(int)(color: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Sets the background color for the row views within the playlist. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#setHasMediaRowSeparator(boolean)(hasSeparator: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)` Specifies whether a line separator should be used between media item rows. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#setThemeId(int)(themeId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)` Sets the theme used to style a media item row components. |

| ### Protected functions |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#createRowViewHolder(android.view.ViewGroup)(parent: https://developer.android.com/reference/android/view/ViewGroup.html!)` Called to create a ViewHolder object for a Row. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#getMediaPlayState(java.lang.Object)(item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!)` Returns the current play state of the given media item. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#isClippingChildren()()` Returns true if the Row view should clip its children. |
| `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onBindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder,java.lang.Object)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!, item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!)` Binds the media item details to their views provided by the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onBindRowActions(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!)` Binds the given media item object action to the given ViewHolder's action views. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder,java.lang.Object)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder, item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html)` Binds the given row object to the given ViewHolder. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#onUnbindMediaDetails(androidx.leanback.widget.AbstractMediaItemPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!)` Unbinds the media item details from their views provided by the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. |

### Inherited Constants

From [androidx.leanback.widget.RowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter) `const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_CUSTOM() = 0`

Don't synchronize row view activated status with selected status or expanded status, application will do its own through `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder#setActivated(boolean)`.
`const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED() = 1`

Synchronizes row view's activated status to expand status of the row view holder.
`const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED() = 3`

Sets the row view's activated status to true when both expand and selected are true.
`const https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_SELECTED() = 2`

Synchronizes row view's activated status to selected status of the row view holder.

### Inherited functions

From [androidx.leanback.widget.FacetProvider](https://developer.android.com/reference/kotlin/androidx/leanback/widget/FacetProvider) `abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/FacetProvider#getFacet(java.lang.Class<?>)(facetClass: https://developer.android.com/reference/java/lang/Class.html<*>)`

Queries optional implemented facet.
From [androidx.leanback.widget.Presenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter) `java-static https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#cancelAnimationsRecursive(android.view.View)(view: https://developer.android.com/reference/android/view/View.html!)`

Utility method for removing all running animations on a view.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#getFacet(java.lang.Class<?>)(facetClass: https://developer.android.com/reference/java/lang/Class.html<*>!)`

Queries optional implemented facet.
`abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object)(viewHolder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder, item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)`

Binds a `https://developer.android.com/reference/android/view/View.html` to an item.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object,java.util.List<java.lang.Object>)(

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

item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html,

payloads: (https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-mutable-list/index.html)https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!>

)`

Binds a `https://developer.android.com/reference/android/view/View.html` to an item with a list of payloads.
`abstract https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onCreateViewHolder(android.view.ViewGroup)(parent: https://developer.android.com/reference/android/view/ViewGroup.html)`

Creates a new `https://developer.android.com/reference/android/view/View.html`.
`abstract https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder)(viewHolder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Called when a view created by this presenter has been attached to a window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Called when a view created by this presenter has been detached from its window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#setFacet(java.lang.Class<?>,java.lang.Object)(facetClass: https://developer.android.com/reference/java/lang/Class.html<*>!, facetImpl: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!)`

Sets dynamic implemented facet in addition to basic Presenter functions.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter#setOnClickListener(androidx.leanback.widget.Presenter.ViewHolder,android.view.View.OnClickListener)(

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

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

)`

Called to set a click listener for the given view holder.
From [androidx.leanback.widget.RowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter) `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#dispatchItemSelectedListener(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)(

vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!,

selected: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html

)`

This method is only called from `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)` onRowViewSelected.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#freeze(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder, freeze: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Freezes/unfreezes the row, typically used when a transition starts/ends.
`https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowHeaderPresenter!` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getHeaderPresenter()()`

Returns the Presenter used for rendering the header, or null if none has been set.
`https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getRowViewHolder(androidx.leanback.widget.Presenter.ViewHolder)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!)`

Returns the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` from the given RowPresenter ViewHolder.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getSelectEffectEnabled()()`

Returns true if the row selection effect is enabled.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getSelectLevel(androidx.leanback.widget.Presenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!)`

Returns the current select level.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getSyncActivatePolicy()()`

Returns the policy of updating row view activated status.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!)`

Called after a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` is created for a Row.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onBindViewHolder(androidx.leanback.widget.Presenter.ViewHolder,java.lang.Object)(viewHolder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder, item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html?)`

Binds a `https://developer.android.com/reference/android/view/View.html` to an item.
`https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onCreateViewHolder(android.view.ViewGroup)(parent: https://developer.android.com/reference/android/view/ViewGroup.html!)`

Creates a new `https://developer.android.com/reference/android/view/View.html`.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewAttachedToWindow(androidx.leanback.widget.RowPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder)`

Invoked when the row view is attached to the window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewDetachedFromWindow(androidx.leanback.widget.RowPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder)`

Invoked when the row view is detached from the window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!, expanded: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Called when the row view's expanded state changes.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder, selected: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Called when the given row view changes selection state.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!)`

Callback when the select level changes.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder)`

Unbinds the given ViewHolder.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onUnbindViewHolder(androidx.leanback.widget.Presenter.ViewHolder)(viewHolder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Unbinds a `https://developer.android.com/reference/android/view/View.html` from an item.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onViewAttachedToWindow(androidx.leanback.widget.Presenter.ViewHolder)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Called when a view created by this presenter has been attached to a window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder)`

Called when a view created by this presenter has been detached from its window.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setEntranceTransitionState(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)(

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

afterEntrance: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html

)`

Changes the visibility of views.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter)(headerPresenter: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowHeaderPresenter!)`

Sets the Presenter used for rendering the header.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder,boolean)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!, expanded: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Sets the expanded state of a Row view.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder,boolean)(holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!, selected: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Sets the selected state of a Row view.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSelectEffectEnabled(boolean)(applyDimOnSelect: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html)`

Enables or disables the row selection effect.
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder,float)(vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!, level: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)`

Sets the current select level to a value between 0 (unselected) and 1 (selected).
`https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSyncActivatePolicy(int)(syncActivatePolicy: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html)`

Sets the policy of updating row view activated status.

## Constants

### PLAY_STATE_INITIAL

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

```
const val PLAY_STATE_INITIAL = 0: Int
```

Indicating that the media item is currently neither playing nor paused.

### PLAY_STATE_PAUSED

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

```
const val PLAY_STATE_PAUSED = 1: Int
```

Indicating that the media item is currently paused.

### PLAY_STATE_PLAYING

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

```
const val PLAY_STATE_PLAYING = 2: Int
```

Indicating that the media item is currently playing

## Public constructors

### AbstractMediaItemPresenter

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

```
AbstractMediaItemPresenter()
```

Constructor used for creating an abstract media item presenter.

### AbstractMediaItemPresenter

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

```
AbstractMediaItemPresenter(themeId: Int)
```

Constructor used for creating an abstract media item presenter.

| Parameters |
|---|---|
| `themeId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The resource id of the theme that defines attributes controlling the appearance of different widgets in a media item row. |

## Public functions

### getActionPresenter

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

```
fun getActionPresenter(): Presenter!
```

Return the presenter used to render a media item row actions.

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter!` | the presenter used to render a media item row actions. |

### getThemeId

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

```
fun getThemeId(): Int
```

Return The resource id of the theme that defines attributes controlling the appearance of different widgets in a media item row.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The resource id of the theme that defines attributes controlling the appearance of different widgets in a media item row. |

### hasMediaRowSeparator

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

```
fun hasMediaRowSeparator(): Boolean
```

### isUsingDefaultSelectEffect

```
fun isUsingDefaultSelectEffect(): Boolean
```

Returns true if this RowPresenter is using the default dimming effect. A subclass may (most likely) return false and override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder)`.

### onBindMediaPlayState

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

```
fun onBindMediaPlayState(vh: AbstractMediaItemPresenter.ViewHolder!): Unit
```

Binds the media item number view to the appropriate play state view of the media item. The play state of the media item is extracted by calling `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter#getMediaPlayState(java.lang.Object)` for the media item embedded within this view. This method triggers updating of the playback state UI if corresponding views are specified for the current playback state. By default, 3 views are provided for each playback state, or these views can be provided by the user.

### onUnbindMediaPlayState

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

```
fun onUnbindMediaPlayState(vh: AbstractMediaItemPresenter.ViewHolder!): Unit
```

Called when the given ViewHolder wants to unbind the play state view.

| Parameters |
|---|---|
| `vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!` | The ViewHolder to unbind from. |

### setActionPresenter

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

```
fun setActionPresenter(actionPresenter: Presenter!): Unit
```

Sets the action presenter rendering each optional custom action within each media item row.

| Parameters |
|---|---|
| `actionPresenter: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter!` | the presenter to be used for rendering a media item row actions. |

### setBackgroundColor

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

```
fun setBackgroundColor(color: Int): Unit
```

Sets the background color for the row views within the playlist. If this is not set, a default color, defaultBrandColor, from theme is used. This defaultBrandColor defaults to android:attr/colorPrimary on v21, if it's specified.

| Parameters |
|---|---|
| `color: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The ARGB color used to set as the media list background color. |

### setHasMediaRowSeparator

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

```
fun setHasMediaRowSeparator(hasSeparator: Boolean): Unit
```

Specifies whether a line separator should be used between media item rows.

| Parameters |
|---|---|
| `hasSeparator: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if a separator should be displayed, false otherwise. |

### setThemeId

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

```
fun setThemeId(themeId: Int): Unit
```

Sets the theme used to style a media item row components.

| Parameters |
|---|---|
| `themeId: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The resource id of the theme that defines attributes controlling the appearance of different widgets in a media item row. |

## Protected functions

### createRowViewHolder

```
protected fun createRowViewHolder(parent: ViewGroup!): RowPresenter.ViewHolder!
```

Called to create a ViewHolder object for a Row. Subclasses will override this method to return a different concrete ViewHolder object.

| Parameters |
|---|---|
| `parent: https://developer.android.com/reference/android/view/ViewGroup.html!` | The parent View for the Row's view holder. |

| Returns |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!` | A ViewHolder for the Row's View. |

### getMediaPlayState

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

```
protected fun getMediaPlayState(item: Any!): Int
```

Returns the current play state of the given media item. By default, this method returns PLAY_STATE_INITIAL which causes the media item number `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder#getMediaItemNameView()` to be displayed for different playback states. Users of this class should override this method in order to provide the play state of their custom media item data model.

| Parameters |
|---|---|
| `item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` | The media item |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | The current play state of this media item |

### isClippingChildren

```
protected fun isClippingChildren(): Boolean
```

Returns true if the Row view should clip its children. The clipChildren flag is set on view in `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder)`. Note that Slide transition or explode transition need turn off clipChildren. Default value is false.

### onBindMediaDetails

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

```
protected abstract fun onBindMediaDetails(vh: AbstractMediaItemPresenter.ViewHolder!, item: Any!): Unit
```

Binds the media item details to their views provided by the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. This method is to be overridden by the users of this presenter. The subclasses of this presenter can access and bind individual views for either of the media item number, name, or duration (depending on whichever views are visible according to the providing theme attributes), by calling `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder#getMediaItemNumberView()`, `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder#getMediaItemNameView()`, and `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder#getMediaItemDurationView()`, on the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder` provided as the argument `vh` of this presenter.

| Parameters |
|---|---|
| `vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!` | The ViewHolder for this `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. |
| `item: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-any/index.html!` | The media item row object being presented. |

### onBindRowActions

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

```
protected fun onBindRowActions(vh: AbstractMediaItemPresenter.ViewHolder!): Unit
```

Binds the given media item object action to the given ViewHolder's action views.

| Parameters |
|---|---|
| `vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!` | ViewHolder for the media item. |

### onBindRowViewHolder

```
protected fun onBindRowViewHolder(vh: RowPresenter.ViewHolder, item: Any): Unit
```

Binds the given row object to the given ViewHolder. Derived classes of `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter` overriding `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onBindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder,java.lang.Object)` must call through the super class's implementation of this method.

### onUnbindMediaDetails

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

```
protected fun onUnbindMediaDetails(vh: AbstractMediaItemPresenter.ViewHolder!): Unit
```

Unbinds the media item details from their views provided by the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter`. This method can be overridden by the subclasses of this presenter if required.

| Parameters |
|---|---|
| `vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter.ViewHolder!` | ViewHolder to unbind from. |