AbstractMediaItemPresenter

abstract class AbstractMediaItemPresenter : RowPresenter


Abstract Presenter class for rendering media items in a playlist format. Media item data provided for this presenter can implement the interface 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 getMediaPlayState 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 setHasMediaRowSeparator to true.

Subclasses must override onBindMediaDetails to implement their media item model data binding to each row view.

The OnItemViewClickedListener and OnItemViewSelectedListener can be used in the same fashion to handle selection or click events on either of media details or each individual action views.

AbstractMediaListHeaderPresenter can be used in conjunction with this presenter in order to display a playlist with a header view.

Summary

Constants

const Int

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

const Int

Indicating that the media item is currently paused.

const Int

Indicating that the media item is currently playing

Public constructors

Constructor used for creating an abstract media item presenter.

Constructor used for creating an abstract media item presenter.

Public functions

Presenter!

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

Int

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

Boolean
Boolean

Returns true if this RowPresenter is using the default dimming effect.

Unit

Binds the media item number view to the appropriate play state view of the media item.

Unit

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

Unit
setActionPresenter(actionPresenter: Presenter!)

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

Unit

Sets the background color for the row views within the playlist.

Unit

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

Unit
setThemeId(themeId: Int)

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

Protected functions

RowPresenter.ViewHolder!

Called to create a ViewHolder object for a Row.

Int

Returns the current play state of the given media item.

Boolean

Returns true if the Row view should clip its children.

abstract Unit

Binds the media item details to their views provided by the AbstractMediaItemPresenter.

Unit

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

Unit

Binds the given row object to the given ViewHolder.

Unit

Unbinds the media item details from their views provided by the AbstractMediaItemPresenter.

Inherited Constants

From androidx.leanback.widget.RowPresenter
const Int

Don't synchronize row view activated status with selected status or expanded status, application will do its own through setActivated.

const Int

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

const Int

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

const Int

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

Inherited functions

From androidx.leanback.widget.FacetProvider
abstract Any?
getFacet(facetClass: Class<Any!>)

Queries optional implemented facet.

From androidx.leanback.widget.Presenter
java-static Unit

Utility method for removing all running animations on a view.

Any!
getFacet(facetClass: Class<Any!>!)

Queries optional implemented facet.

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

Binds a View to an item.

Unit
onBindViewHolder(
    viewHolder: Presenter.ViewHolder,
    item: Any,
    payloads: (Mutable)List<Any!>
)

Binds a View to an item with a list of payloads.

abstract Presenter.ViewHolder

Creates a new View.

abstract Unit

Unbinds a View from an item.

Unit

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

Unit

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

Unit
setFacet(facetClass: Class<Any!>!, facetImpl: Any!)

Sets dynamic implemented facet in addition to basic Presenter functions.

Unit
setOnClickListener(
    holder: Presenter.ViewHolder!,
    listener: View.OnClickListener!
)

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

From androidx.leanback.widget.RowPresenter
Unit

This method is only called from onRowViewSelected onRowViewSelected.

Unit

Freezes/unfreezes the row, typically used when a transition starts/ends.

RowHeaderPresenter!

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

RowPresenter.ViewHolder!

Returns the RowPresenter.ViewHolder from the given RowPresenter ViewHolder.

Boolean

Returns true if the row selection effect is enabled.

Float

Returns the current select level.

Int

Returns the policy of updating row view activated status.

Unit

Called after a RowPresenter.ViewHolder is created for a Row.

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

Binds a View to an item.

Presenter.ViewHolder!

Creates a new View.

Unit

Invoked when the row view is attached to the window.

Unit

Invoked when the row view is detached from the window.

Unit

Called when the row view's expanded state changes.

Unit

Called when the given row view changes selection state.

Unit

Callback when the select level changes.

Unit

Unbinds the given ViewHolder.

Unit

Unbinds a View from an item.

Unit

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

Unit

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

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

Changes the visibility of views.

Unit

Sets the Presenter used for rendering the header.

Unit

Sets the expanded state of a Row view.

Unit

Sets the selected state of a Row view.

Unit
setSelectEffectEnabled(applyDimOnSelect: Boolean)

Enables or disables the row selection effect.

Unit

Sets the current select level to a value between 0 (unselected) and 1 (selected).

Unit
setSyncActivatePolicy(syncActivatePolicy: Int)

Sets the policy of updating row view activated status.

Constants

PLAY_STATE_INITIAL

Added in 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
const val PLAY_STATE_PAUSED = 1: Int

Indicating that the media item is currently paused.

PLAY_STATE_PLAYING

Added in 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
AbstractMediaItemPresenter()

Constructor used for creating an abstract media item presenter.

AbstractMediaItemPresenter

Added in 1.1.0
AbstractMediaItemPresenter(themeId: Int)

Constructor used for creating an abstract media item presenter.

Parameters
themeId: Int

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
fun getActionPresenter(): Presenter!

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

Returns
Presenter!

the presenter used to render a media item row actions.

getThemeId

Added in 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
Int

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

onBindMediaPlayState

Added in 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 getMediaPlayState 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
fun onUnbindMediaPlayState(vh: AbstractMediaItemPresenter.ViewHolder!): Unit

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

Parameters
vh: AbstractMediaItemPresenter.ViewHolder!

The ViewHolder to unbind from.

setActionPresenter

Added in 1.1.0
fun setActionPresenter(actionPresenter: Presenter!): Unit

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

Parameters
actionPresenter: Presenter!

the presenter to be used for rendering a media item row actions.

setBackgroundColor

Added in 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: Int

The ARGB color used to set as the media list background color.

setHasMediaRowSeparator

Added in 1.1.0
fun setHasMediaRowSeparator(hasSeparator: Boolean): Unit

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

Parameters
hasSeparator: Boolean

true if a separator should be displayed, false otherwise.

setThemeId

Added in 1.1.0
fun setThemeId(themeId: Int): Unit

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

Parameters
themeId: Int

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

Protected functions

createRowViewHolder

Added in 1.2.0-alpha04
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: ViewGroup!

The parent View for the Row's view holder.

Returns
RowPresenter.ViewHolder!

A ViewHolder for the Row's View.

getMediaPlayState

Added in 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 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: Any!

The media item

Returns
Int

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 initializeRowViewHolder. Note that Slide transition or explode transition need turn off clipChildren. Default value is false.

onBindMediaDetails

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

Binds the media item details to their views provided by the 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 getMediaItemNumberView, getMediaItemNameView, and getMediaItemDurationView, on the ViewHolder provided as the argument vh of this presenter.

Parameters
vh: AbstractMediaItemPresenter.ViewHolder!

The ViewHolder for this AbstractMediaItemPresenter.

item: Any!

The media item row object being presented.

onBindRowActions

Added in 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: 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 RowPresenter overriding onBindRowViewHolder must call through the super class's implementation of this method.

onUnbindMediaDetails

Added in 1.1.0
protected fun onUnbindMediaDetails(vh: AbstractMediaItemPresenter.ViewHolder!): Unit

Unbinds the media item details from their views provided by the AbstractMediaItemPresenter. This method can be overridden by the subclasses of this presenter if required.

Parameters
vh: AbstractMediaItemPresenter.ViewHolder!

ViewHolder to unbind from.