# RowPresenter

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

*** ** * ** ***

<br />

```
abstract class RowPresenter : Presenter
```

<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) |

Known direct subclasses [AbstractMediaItemPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaItemPresenter), [AbstractMediaListHeaderPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaListHeaderPresenter), [DetailsOverviewRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/DetailsOverviewRowPresenter), [FullWidthDetailsOverviewRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/FullWidthDetailsOverviewRowPresenter), [ListRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/ListRowPresenter), [PlaybackRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackRowPresenter)

|---|---|
| `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. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/AbstractMediaListHeaderPresenter` | Abstract presenter class for rendering the header for a list of media items in a playlist. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/DetailsOverviewRowPresenter` | **This class is deprecated.** Use `https://developer.android.com/reference/kotlin/androidx/leanback/widget/FullWidthDetailsOverviewRowPresenter` <br /> |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/FullWidthDetailsOverviewRowPresenter` | Renders a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/DetailsOverviewRow` to display an overview of an item. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/ListRowPresenter` | ListRowPresenter renders `https://developer.android.com/reference/kotlin/androidx/leanback/widget/ListRow` using a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/HorizontalGridView` hosted in a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/ListRowView`. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackRowPresenter` | Subclass of `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter` that can define the desired behavior when the view reappears. |

Known indirect subclasses [PlaybackControlsRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackControlsRowPresenter), [PlaybackTransportRowPresenter](https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackTransportRowPresenter)

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackControlsRowPresenter` | A PlaybackControlsRowPresenter renders a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackControlsRow` to display a series of playback control buttons. |
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackTransportRowPresenter` | A PlaybackTransportRowPresenter renders a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/PlaybackControlsRow` to display a series of playback control buttons. |

*** ** * ** ***

An abstract `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter` that renders an Object in RowsFragment, the object can be subclass `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Row` or a generic one. When the object is not `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Row` class, `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder#getRow()` returns null.

### Customize UI widgets

When a subclass of RowPresenter adds UI widgets, it should subclass `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` and override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#createRowViewHolder(android.view.ViewGroup)` and `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#initializeRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder)`. The subclass must use layout id "row_content" for the widget that will be aligned to the title of any `https://developer.android.com/reference/kotlin/androidx/leanback/app/HeadersFragment` that may exist in the parent fragment. RowPresenter contains an optional and replaceable `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowHeaderPresenter` that renders the header. You can disable the default rendering or replace the Presenter with a new header presenter by calling `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setHeaderPresenter(androidx.leanback.widget.RowHeaderPresenter)`.

### UI events from fragments

RowPresenter receives calls from its parent (typically a Fragment) when:

- A row is selected via `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setRowViewSelected(androidx.leanback.widget.Presenter.ViewHolder,boolean)`. The event is triggered immediately when there is a row selection change before the selection animation is started. Selected status may control activated status of the row (see "Activated status" below). Subclasses of RowPresenter may override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)`.
- A row is expanded to full height via `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setRowViewExpanded(androidx.leanback.widget.Presenter.ViewHolder,boolean)` when BrowseFragment hides fast lane on the left. The event is triggered immediately before the expand animation is started. Row title is shown when row is expanded. Expanded status may control activated status of the row (see "Activated status" below). Subclasses of RowPresenter may override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewExpanded(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)`.

### Activated status

The activated status of a row is applied to the row view and its children via `https://developer.android.com/reference/android/view/View.html#setActivated(boolean)`. The activated status is typically used to control `https://developer.android.com/reference/kotlin/androidx/leanback/widget/BaseCardView` info region visibility. The row's activated status can be controlled by selected status and/or expanded status. Call `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSyncActivatePolicy(int)` and choose one of the four policies:

- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED()` Activated status is synced with row expanded status
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_SELECTED()` Activated status is synced with row selected status
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED()` Activated status is set to true when both expanded and selected status are true
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_CUSTOM()` Activated status is not controlled by selected status or expanded status, application can control activated status by its own. Application should call `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder#setActivated(boolean)` to change activated status of row view.

### User events

RowPresenter provides `https://developer.android.com/reference/kotlin/androidx/leanback/widget/OnItemViewSelectedListener` and `https://developer.android.com/reference/kotlin/androidx/leanback/widget/OnItemViewClickedListener`. If a subclass wants to add its own `https://developer.android.com/reference/android/view/View.OnFocusChangeListener.html` or `https://developer.android.com/reference/android/view/View.OnClickListener.html`, it must do that in `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#createRowViewHolder(android.view.ViewGroup)` to be properly chained by the library. Adding View listeners after `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#createRowViewHolder(android.view.ViewGroup)` is undefined and may result in incorrect behavior by the library's listeners.

### Selection animation

When a user scrolls through rows, a fragment will initiate animation and call `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSelectLevel(androidx.leanback.widget.Presenter.ViewHolder,float)` with float value between 0 and 1. By default, the RowPresenter draws a dim overlay on top of the row view for views that are not selected. Subclasses may override this default effect by having `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#isUsingDefaultSelectEffect()` return false and overriding `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder)` to apply a different selection effect.

Call `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#setSelectEffectEnabled(boolean)` to enable/disable the select effect, This will not only enable/disable the default dim effect but also subclasses must respect this flag as well.

## Summary

| ### Nested types |
|---|
| `class https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder : https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder` A ViewHolder for a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/Row`. |

| ### Constants |
|---|---|
| `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. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#RowPresenter()()` Constructs a RowPresenter. |

| ### Public functions |
|---|---|
| `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/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#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/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#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. |

| ### Protected functions |
|---|---|
| `abstract https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#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/-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#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/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#isClippingChildren()()` Returns true if the Row view should clip its children. |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#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/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. |

### 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.
`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.
`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.

## Constants

### SYNC_ACTIVATED_CUSTOM

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

```
const val SYNC_ACTIVATED_CUSTOM = 0: Int
```

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)`.

### SYNC_ACTIVATED_TO_EXPANDED

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

```
const val SYNC_ACTIVATED_TO_EXPANDED = 1: Int
```

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

### SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED

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

```
const val SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED = 3: Int
```

Sets the row view's activated status to true when both expand and selected are true.

### SYNC_ACTIVATED_TO_SELECTED

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

```
const val SYNC_ACTIVATED_TO_SELECTED = 2: Int
```

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

## Public constructors

### RowPresenter

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

```
RowPresenter()
```

Constructs a RowPresenter.

## Public functions

### freeze

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

```
fun freeze(holder: RowPresenter.ViewHolder, freeze: Boolean): Unit
```

Freezes/unfreezes the row, typically used when a transition starts/ends. This method is called by the fragment, it should not call it directly by the application.

### getHeaderPresenter

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

```
fun getHeaderPresenter(): RowHeaderPresenter!
```

Returns the Presenter used for rendering the header, or null if none has been set.

### getRowViewHolder

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

```
fun getRowViewHolder(holder: Presenter.ViewHolder!): RowPresenter.ViewHolder!
```

Returns the `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` from the given RowPresenter ViewHolder.

### getSelectEffectEnabled

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

```
fun getSelectEffectEnabled(): Boolean
```

Returns true if the row selection effect is enabled. This value not only determines whether the default dim implementation is used, but subclasses must also respect this flag.

### getSelectLevel

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

```
fun getSelectLevel(vh: Presenter.ViewHolder!): Float
```

Returns the current select level. The value will be between 0 (unselected) and 1 (selected).

### getSyncActivatePolicy

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

```
fun getSyncActivatePolicy(): Int
```

Returns the policy of updating row view activated status. Can be one of:

- Default value `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_SELECTED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_CUSTOM()`

### isUsingDefaultSelectEffect

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

```
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)`.

### onBindViewHolder

```
fun onBindViewHolder(viewHolder: Presenter.ViewHolder, item: Any?): Unit
```

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

### onCreateViewHolder

```
fun onCreateViewHolder(parent: ViewGroup!): Presenter.ViewHolder!
```

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

### onUnbindViewHolder

```
fun onUnbindViewHolder(viewHolder: Presenter.ViewHolder): Unit
```

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

```
fun onViewAttachedToWindow(holder: Presenter.ViewHolder): Unit
```

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/kotlin/androidx/leanback/widget/Presenter#onViewDetachedFromWindow(androidx.leanback.widget.Presenter.ViewHolder)` those resources should be restored here.

| Parameters |
|---|---|
| `holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder` | Holder of the view being attached |

### onViewDetachedFromWindow

```
fun onViewDetachedFromWindow(holder: Presenter.ViewHolder): Unit
```

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 |
|---|---|
| `holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder` | Holder of the view being detached |

### setEntranceTransitionState

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

```
fun setEntranceTransitionState(
    holder: RowPresenter.ViewHolder,
    afterEntrance: Boolean
): Unit
```

Changes the visibility of views. The entrance transition will be run against the views that change visibilities. A subclass may override and begin with calling super.setEntranceTransitionState(). This method is called by the fragment, it should not be called directly by the application.

| Parameters |
|---|---|
| `holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` | The ViewHolder of the row. |
| `afterEntrance: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if children of row participating in entrance transition should be set to visible, false otherwise. |

### setHeaderPresenter

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

```
fun setHeaderPresenter(headerPresenter: RowHeaderPresenter!): Unit
```

Sets the Presenter used for rendering the header. Can be null to disable header rendering. The method must be called before creating any Row Views.

### setRowViewExpanded

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

```
fun setRowViewExpanded(holder: Presenter.ViewHolder!, expanded: Boolean): Unit
```

Sets the expanded state of a Row view.

| Parameters |
|---|---|
| `holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!` | The Row ViewHolder to set expanded state on. |
| `expanded: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the Row is expanded, false otherwise. |

### setRowViewSelected

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

```
fun setRowViewSelected(holder: Presenter.ViewHolder!, selected: Boolean): Unit
```

Sets the selected state of a Row view.

| Parameters |
|---|---|
| `holder: https://developer.android.com/reference/kotlin/androidx/leanback/widget/Presenter.ViewHolder!` | The Row ViewHolder to set expanded state on. |
| `selected: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | True if the Row is expanded, false otherwise. |

### setSelectEffectEnabled

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

```
fun setSelectEffectEnabled(applyDimOnSelect: Boolean): Unit
```

Enables or disables the row selection effect. This will not only affect the default dim effect, but subclasses must respect this flag as well.

### setSelectLevel

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

```
fun setSelectLevel(vh: Presenter.ViewHolder!, level: Float): Unit
```

Sets the current select level to a value between 0 (unselected) and 1 (selected). Subclasses may override `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onSelectLevelChanged(androidx.leanback.widget.RowPresenter.ViewHolder)` to respond to changes in the selected level.

### setSyncActivatePolicy

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

```
fun setSyncActivatePolicy(syncActivatePolicy: Int): Unit
```

Sets the policy of updating row view activated status. Can be one of:

- Default value `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_SELECTED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED()`
- `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#SYNC_ACTIVATED_CUSTOM()`

## Protected functions

### createRowViewHolder

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

```
protected abstract 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. |

### dispatchItemSelectedListener

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

```
protected fun dispatchItemSelectedListener(
    vh: RowPresenter.ViewHolder!,
    selected: Boolean
): Unit
```

This method is only called from `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#onRowViewSelected(androidx.leanback.widget.RowPresenter.ViewHolder,boolean)` onRowViewSelected. The default behavior is to signal row selected events with a null item parameter. A Subclass of RowPresenter having child items should override this method and dispatch events with item information.

### initializeRowViewHolder

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

```
protected fun initializeRowViewHolder(vh: RowPresenter.ViewHolder!): Unit
```

Called after a `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder` is created for a Row. Subclasses may override this method and start by calling super.initializeRowViewHolder(ViewHolder).

| Parameters |
|---|---|
| `vh: https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter.ViewHolder!` | The ViewHolder to initialize for the Row. |

### isClippingChildren

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

```
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.

### onBindRowViewHolder

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

```
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.

### onRowViewAttachedToWindow

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

```
protected fun onRowViewAttachedToWindow(vh: RowPresenter.ViewHolder): Unit
```

Invoked when the row view is attached to the window.

### onRowViewDetachedFromWindow

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

```
protected fun onRowViewDetachedFromWindow(vh: RowPresenter.ViewHolder): Unit
```

Invoked when the row view is detached from the window.

### onRowViewExpanded

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

```
protected fun onRowViewExpanded(vh: RowPresenter.ViewHolder!, expanded: Boolean): Unit
```

Called when the row view's expanded state changes. A subclass may override this method to respond to expanded state changes of a Row. The default implementation will hide/show the header view. Subclasses may make visual changes to the Row View but must not create animation on the Row view.

### onRowViewSelected

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

```
protected fun onRowViewSelected(vh: RowPresenter.ViewHolder, selected: Boolean): Unit
```

Called when the given row view changes selection state. A subclass may override this to respond to selected state changes of a Row. A subclass may make visual changes to Row view but must not create animation on the Row view.

### onSelectLevelChanged

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

```
protected fun onSelectLevelChanged(vh: RowPresenter.ViewHolder!): Unit
```

Callback when the select level changes. The default implementation applies the select level to `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowHeaderPresenter#setSelectLevel(androidx.leanback.widget.RowHeaderPresenter.ViewHolder,float)` when `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#getSelectEffectEnabled()` is true. Subclasses may override this function and implement a different select effect. In this case, the method `https://developer.android.com/reference/kotlin/androidx/leanback/widget/RowPresenter#isUsingDefaultSelectEffect()` should also be overridden to disable the default dimming effect.

### onUnbindRowViewHolder

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

```
protected fun onUnbindRowViewHolder(vh: RowPresenter.ViewHolder): Unit
```

Unbinds 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#onUnbindRowViewHolder(androidx.leanback.widget.RowPresenter.ViewHolder)` must call through the super class's implementation of this method.