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
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(Object) to provide the current play
state of their media item model in case they wish to use different views depending on the
The presenter can optionally provide line separators between media rows by setting
setHasMediaRowSeparator(boolean) to true.
Subclasses must override
onBindMediaDetails(AbstractMediaItemPresenter.ViewHolder, Object) to implement their media item model
data binding to each row view.
AbstractMediaListHeaderPresenter can be used in conjunction with this presenter in
order to display a playlist with a header view.
The ViewHolder for the
Indicating that the media item is currently neither playing nor paused.
Indicating that the media item is currently paused.
Indicating that the media item is currently playing