Android APIs
public abstract class

RowPresenter

extends Presenter
java.lang.Object
   ↳ android.support.v17.leanback.widget.Presenter
     ↳ android.support.v17.leanback.widget.RowPresenter
Known Direct Subclasses

Class Overview

An abstract Presenter that renders a Row.

Customize UI widgets

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

UI events from fragments

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

User events

RowPresenter provides OnItemSelectedListener and OnItemClickedListener. If a subclass wants to add its own View.OnFocusChangeListener or View.OnClickListener, it must do that in createRowViewHolder(ViewGroup) to be properly chained by the library. Adding View listeners after createRowViewHolder(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 setSelectLevel(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 isUsingDefaultSelectEffect() return false and overriding onSelectLevelChanged(ViewHolder) to apply a different selection effect.

Call 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 Classes
class RowPresenter.ViewHolder A view holder for a Row
Public Constructors
RowPresenter()
Public Methods
boolean canDrawOutOfBounds()
Return true if the Row view can draw outside its bounds.
final RowHeaderPresenter getHeaderPresenter()
Get the Presenter used for rendering the header, or null if none has been set.
final OnItemClickedListener getOnItemClickedListener()
Get the listener for item click events.
final OnItemSelectedListener getOnItemSelectedListener()
Get the listener for item or row selection.
final RowPresenter.ViewHolder getRowViewHolder(Presenter.ViewHolder holder)
Get the RowPresenter.ViewHolder from the given Presenter ViewHolder.
final boolean getSelectEffectEnabled()
Returns true if the row selection effect is enabled.
final float getSelectLevel(Presenter.ViewHolder vh)
Get the current select level.
boolean isUsingDefaultSelectEffect()
Return whether this RowPresenter is using the default dimming effect provided by the library.
final void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item)
Binds a View to an item.
final Presenter.ViewHolder onCreateViewHolder(ViewGroup parent)
Creates a new View.
final void onUnbindViewHolder(Presenter.ViewHolder viewHolder)
Unbinds a View from an item.
final void onViewAttachedToWindow(Presenter.ViewHolder holder)
Called when a view created by this presenter has been attached to a window.
final void onViewDetachedFromWindow(Presenter.ViewHolder holder)
Called when a view created by this presenter has been detached from its window.
final void setHeaderPresenter(RowHeaderPresenter headerPresenter)
Set the Presenter used for rendering the header.
final void setOnItemClickedListener(OnItemClickedListener listener)
Set the listener for item click events.
final void setOnItemSelectedListener(OnItemSelectedListener listener)
Set the listener for item or row selection.
final void setRowViewExpanded(Presenter.ViewHolder holder, boolean expanded)
Set the expanded state of a Row view.
final void setRowViewSelected(Presenter.ViewHolder holder, boolean selected)
Set the selected state of a Row view.
final void setSelectEffectEnabled(boolean applyDimOnSelect)
Enables or disables the row selection effect.
final void setSelectLevel(Presenter.ViewHolder vh, float level)
Set the current select level to a value between 0 (unselected) and 1 (selected).
Protected Methods
abstract RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent)
Called to create a ViewHolder object for a Row.
void initializeRowViewHolder(RowPresenter.ViewHolder vh)
Called after a RowPresenter.ViewHolder is created for a Row.
void onBindRowViewHolder(RowPresenter.ViewHolder vh, Object item)
void onRowViewAttachedToWindow(RowPresenter.ViewHolder vh)
void onRowViewDetachedFromWindow(RowPresenter.ViewHolder vh)
void onRowViewExpanded(RowPresenter.ViewHolder vh, boolean expanded)
Subclass may override this to respond to expanded state changes of a Row.
void onRowViewSelected(RowPresenter.ViewHolder vh, boolean selected)
Subclass may override this to respond to selected state changes of a Row.
void onSelectLevelChanged(RowPresenter.ViewHolder vh)
Callback when select level is changed.
void onUnbindRowViewHolder(RowPresenter.ViewHolder vh)
[Expand]
Inherited Methods
From class android.support.v17.leanback.widget.Presenter
From class java.lang.Object

Public Constructors

public RowPresenter ()

Public Methods

public boolean canDrawOutOfBounds ()

Return true if the Row view can draw outside its bounds.

public final RowHeaderPresenter getHeaderPresenter ()

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

public final OnItemClickedListener getOnItemClickedListener ()

Get the listener for item click events.

public final OnItemSelectedListener getOnItemSelectedListener ()

Get the listener for item or row selection.

public final RowPresenter.ViewHolder getRowViewHolder (Presenter.ViewHolder holder)

Get the RowPresenter.ViewHolder from the given Presenter ViewHolder.

public final boolean getSelectEffectEnabled ()

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.

public final float getSelectLevel (Presenter.ViewHolder vh)

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

public boolean isUsingDefaultSelectEffect ()

Return whether this RowPresenter is using the default dimming effect provided by the library. Subclasses may(most likely) return false and override onSelectLevelChanged(ViewHolder).

public final void onBindViewHolder (Presenter.ViewHolder viewHolder, Object item)

Binds a View to an item.

public final Presenter.ViewHolder onCreateViewHolder (ViewGroup parent)

Creates a new View.

public final void onUnbindViewHolder (Presenter.ViewHolder viewHolder)

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.

public final void onViewAttachedToWindow (Presenter.ViewHolder holder)

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(ViewHolder) those resources should be restored here.

Parameters
holder Holder of the view being attached

public final void onViewDetachedFromWindow (Presenter.ViewHolder holder)

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 an detaching them as appropriate.

Parameters
holder Holder of the view being detached

public final void setHeaderPresenter (RowHeaderPresenter headerPresenter)

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

public final void setOnItemClickedListener (OnItemClickedListener listener)

Set the listener for item click events. A RowPresenter does not use this listener, but a subclass may fire an item click event if it has the concept of an item. The OnItemClickedListener will override any View.OnClickListener that an item's Presenter sets during onCreateViewHolder(ViewGroup). So in general, you should choose to use an OnItemClickedListener or a View.OnClickListener, but not both.

public final void setOnItemSelectedListener (OnItemSelectedListener listener)

Set the listener for item or row selection. A RowPresenter fires a row selection event with a null item. Subclasses (e.g. ListRowPresenter) can fire a selection event with the selected item.

public final void setRowViewExpanded (Presenter.ViewHolder holder, boolean expanded)

Set the expanded state of a Row view.

Parameters
holder The Row ViewHolder to set expanded state on.
expanded True if the Row is expanded, false otherwise.

public final void setRowViewSelected (Presenter.ViewHolder holder, boolean selected)

Set the selected state of a Row view.

Parameters
holder The Row ViewHolder to set expanded state on.
selected True if the Row is expanded, false otherwise.

public final void setSelectEffectEnabled (boolean applyDimOnSelect)

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

public final void setSelectLevel (Presenter.ViewHolder vh, float level)

Set the current select level to a value between 0 (unselected) and 1 (selected). Subclasses may override onSelectLevelChanged(ViewHolder) to respond to changes in the selected level.

Protected Methods

protected abstract RowPresenter.ViewHolder createRowViewHolder (ViewGroup parent)

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

Parameters
parent The parent View for the Row's view holder.
Returns
  • A ViewHolder for the Row's View.

protected void initializeRowViewHolder (RowPresenter.ViewHolder vh)

Called after a RowPresenter.ViewHolder is created for a Row. Subclasses may override this method and start by calling super.initializeRowViewHolder(ViewHolder).

Parameters
vh The ViewHolder to initialize for the Row.

protected void onBindRowViewHolder (RowPresenter.ViewHolder vh, Object item)

protected void onRowViewAttachedToWindow (RowPresenter.ViewHolder vh)

protected void onRowViewDetachedFromWindow (RowPresenter.ViewHolder vh)

protected void onRowViewExpanded (RowPresenter.ViewHolder vh, boolean expanded)

Subclass may override this 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.

protected void onRowViewSelected (RowPresenter.ViewHolder vh, boolean selected)

Subclass may override this to respond to selected state changes of a Row. Subclass may make visual changes to Row view but must not create animation on the Row view.

protected void onSelectLevelChanged (RowPresenter.ViewHolder vh)

Callback when select level is changed. The default implementation applies the select level to setSelectLevel(RowHeaderPresenter.ViewHolder, float) when getSelectEffectEnabled() is true. Subclasses may override this function and implement a different select effect. In this case, you should also override isUsingDefaultSelectEffect() to disable the default dimming effect applied by the library.

protected void onUnbindRowViewHolder (RowPresenter.ViewHolder vh)