Presenter
abstract class Presenter : FacetProvider
AbstractDetailsDescriptionPresenter |
An abstract |
DetailsOverviewLogoPresenter |
Presenter that responsible to create a ImageView and bind to DetailsOverviewRow. |
DividerPresenter |
DividerPresenter provides a default presentation for |
RowHeaderPresenter |
RowHeaderPresenter provides a default presentation for |
RowPresenter |
An abstract |
VerticalGridPresenter |
A presenter that renders objects in a |
AbstractMediaItemPresenter |
Abstract |
AbstractMediaListHeaderPresenter |
Abstract presenter class for rendering the header for a list of media items in a playlist. |
DetailsOverviewRowPresenter |
This class is deprecated. |
FullWidthDetailsOverviewRowPresenter |
Renders a |
ListRowPresenter |
ListRowPresenter renders |
PlaybackControlsRowPresenter |
A PlaybackControlsRowPresenter renders a |
PlaybackRowPresenter |
Subclass of |
PlaybackTransportRowPresenter |
A PlaybackTransportRowPresenter renders a |
A Presenter is used to generate Views and bind Objects to them on demand. It is closely related to the concept of an RecyclerView.Adapter, but is not position-based. The leanback framework implements the adapter concept using ObjectAdapter which refers to a Presenter (or PresenterSelector) instance.
Presenters should be stateless. Presenters typically extend ViewHolder to store all necessary view state information, such as references to child views to be used when binding to avoid expensive calls to findViewById.
A trivial Presenter that takes a string and renders it into a TextView:
public class StringTextViewPresenter extends Presenter { // This class does not need a custom ViewHolder, since it does not use // a complex layout. @Override public ViewHolder onCreateViewHolder(ViewGroup parent) { return new ViewHolder(new TextView(parent.getContext())); } @Override public void onBindViewHolder(ViewHolder viewHolder, Object item) { String str = (String) item; TextView textView = (TextView) viewHolder.mView; textView.setText(item); } @Override public void onUnbindViewHolder(ViewHolder viewHolder) { // Nothing to unbind for TextView, but if this viewHolder had // allocated bitmaps, they can be released here. } }
setFacet. Supported facets: ItemAlignmentFacet is used by HorizontalGridView and VerticalGridView to customize child alignment.
Summary
Nested types |
|---|
class Presenter.ViewHolder : FacetProviderViewHolder can be subclassed and used to cache any view accessors needed to improve binding performance (for example, results of findViewById) without needing to subclass a View. |
abstract class Presenter.ViewHolderTaskBase class to perform a task on Presenter.ViewHolder. |
Public constructors |
|---|
Public functions |
|
|---|---|
Any! |
Queries optional implemented facet. |
abstract Unit |
onBindViewHolder(viewHolder: Presenter.ViewHolder, item: Any?)Binds a |
Unit |
onBindViewHolder(Binds a |
abstract Presenter.ViewHolder |
onCreateViewHolder(parent: ViewGroup)Creates a new |
abstract Unit |
onUnbindViewHolder(viewHolder: Presenter.ViewHolder)Unbinds a |
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 |
Sets dynamic implemented facet in addition to basic Presenter functions. |
Unit |
setOnClickListener(Called to set a click listener for the given view holder. |
Protected functions |
|
|---|---|
java-static Unit |
cancelAnimationsRecursive(view: View!)Utility method for removing all running animations on a view. |
Public constructors
Public functions
getFacet
fun getFacet(facetClass: Class<Any!>!): Any!
Queries optional implemented facet.
| Parameters | |
|---|---|
facetClass: Class<Any!>! |
Facet classes to query, examples are: class of |
| Returns | |
|---|---|
Any! |
Facet implementation for the facetClass or null if feature not implemented. |
onBindViewHolder
abstract fun onBindViewHolder(viewHolder: Presenter.ViewHolder, item: Any?): Unit
Binds a View to an item.
onBindViewHolder
fun onBindViewHolder(
viewHolder: Presenter.ViewHolder,
item: Any,
payloads: (Mutable)List<Any!>
): Unit
Binds a View to an item with a list of payloads.
| Parameters | |
|---|---|
viewHolder: Presenter.ViewHolder |
The ViewHolder which should be updated to represent the contents of the item at the given position in the data set. |
item: Any |
The item which should be bound to view holder. |
payloads: (Mutable)List<Any!> |
A non-null list of merged payloads. Can be empty list if requires full update. |
onCreateViewHolder
abstract fun onCreateViewHolder(parent: ViewGroup): Presenter.ViewHolder
Creates a new View.
onUnbindViewHolder
abstract fun onUnbindViewHolder(viewHolder: Presenter.ViewHolder): Unit
Unbinds a View 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 onViewDetachedFromWindow those resources should be restored here.
| Parameters | |
|---|---|
holder: 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: Presenter.ViewHolder |
Holder of the view being detached |
setFacet
fun setFacet(facetClass: Class<Any!>!, facetImpl: Any!): Unit
Sets dynamic implemented facet in addition to basic Presenter functions.
| Parameters | |
|---|---|
facetClass: Class<Any!>! |
Facet classes to query, can be class of |
facetImpl: Any! |
Facet implementation. |
setOnClickListener
fun setOnClickListener(
holder: Presenter.ViewHolder!,
listener: View.OnClickListener!
): Unit
Called to set a click listener for the given view holder. The default implementation sets the click listener on the root view in the view holder. If the root view isn't focusable this method should be overridden to set the listener on the appropriate focusable child view(s).
| Parameters | |
|---|---|
holder: Presenter.ViewHolder! |
The view holder containing the view(s) on which the listener should be set. |
listener: View.OnClickListener! |
The click listener to be set. |
Protected functions
cancelAnimationsRecursive
protected java-static fun cancelAnimationsRecursive(view: View!): Unit
Utility method for removing all running animations on a view.