added in version 22.1.0
belongs to Maven artifact com.android.support:leanback-v17:28.0.0-alpha1

RowPresenter

public abstract class RowPresenter
extends Presenter

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


An abstract Presenter that renders an Object in RowsFragment, the object can be subclass Row or a generic one. When the object is not Row class, getRow() returns null.

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:

Activated status

The activated status of a row is applied to the row view and its children via setActivated(boolean). The activated status is typically used to control BaseCardView info region visibility. The row's activated status can be controlled by selected status and/or expanded status. Call setSyncActivatePolicy(int) and choose one of the four policies:

User events

RowPresenter provides OnItemViewSelectedListener and OnItemViewClickedListener. 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 ViewHolder for a Row

Constants

int SYNC_ACTIVATED_CUSTOM

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

int SYNC_ACTIVATED_TO_EXPANDED

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

int SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED

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

int SYNC_ACTIVATED_TO_SELECTED

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

Public constructors

RowPresenter()

Constructs a RowPresenter.

Public methods

void freeze(RowPresenter.ViewHolder holder, boolean freeze)

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

final RowHeaderPresenter getHeaderPresenter()

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

final RowPresenter.ViewHolder getRowViewHolder(Presenter.ViewHolder holder)

Returns the RowPresenter.ViewHolder from the given RowPresenter ViewHolder.

final boolean getSelectEffectEnabled()

Returns true if the row selection effect is enabled.

final float getSelectLevel(Presenter.ViewHolder vh)

Returns the current select level.

final int getSyncActivatePolicy()

Returns the policy of updating row view activated status.

boolean isUsingDefaultSelectEffect()

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

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.

void setEntranceTransitionState(RowPresenter.ViewHolder holder, boolean afterEntrance)

Changes the visibility of views.

final void setHeaderPresenter(RowHeaderPresenter headerPresenter)

Sets the Presenter used for rendering the header.

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

Sets the expanded state of a Row view.

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

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

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

final void setSyncActivatePolicy(int syncActivatePolicy)

Sets the policy of updating row view activated status.

Protected methods

abstract RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent)

Called to create a ViewHolder object for a Row.

void dispatchItemSelectedListener(RowPresenter.ViewHolder vh, boolean selected)

This method is only called from onRowViewSelected(ViewHolder, boolean) onRowViewSelected.

void initializeRowViewHolder(RowPresenter.ViewHolder vh)

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

boolean isClippingChildren()

Returns true if the Row view should clip its children.

void onBindRowViewHolder(RowPresenter.ViewHolder vh, Object item)

Binds the given row object to the given ViewHolder.

void onRowViewAttachedToWindow(RowPresenter.ViewHolder vh)

Invoked when the row view is attached to the window.

void onRowViewDetachedFromWindow(RowPresenter.ViewHolder vh)

Invoked when the row view is detached from the window.

void onRowViewExpanded(RowPresenter.ViewHolder vh, boolean expanded)

Called when the row view's expanded state changes.

void onRowViewSelected(RowPresenter.ViewHolder vh, boolean selected)

Called when the given row view changes selection state.

void onSelectLevelChanged(RowPresenter.ViewHolder vh)

Callback when the select level changes.

void onUnbindRowViewHolder(RowPresenter.ViewHolder vh)

Unbinds the given ViewHolder.

Inherited methods

From class android.support.v17.leanback.widget.Presenter
From class java.lang.Object
From interface android.support.v17.leanback.widget.FacetProvider

Constants

SYNC_ACTIVATED_CUSTOM

added in version 22.1.0
int SYNC_ACTIVATED_CUSTOM

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

Constant Value: 0 (0x00000000)

SYNC_ACTIVATED_TO_EXPANDED

added in version 22.1.0
int SYNC_ACTIVATED_TO_EXPANDED

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

Constant Value: 1 (0x00000001)

SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED

added in version 22.1.0
int SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED

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

Constant Value: 3 (0x00000003)

SYNC_ACTIVATED_TO_SELECTED

added in version 22.1.0
int SYNC_ACTIVATED_TO_SELECTED

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

Constant Value: 2 (0x00000002)

Public constructors

RowPresenter

added in version 22.1.0
RowPresenter ()

Constructs a RowPresenter.

Public methods

freeze

added in version 22.1.0
void freeze (RowPresenter.ViewHolder holder, 
                boolean freeze)

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.

Parameters
holder RowPresenter.ViewHolder

freeze boolean

getHeaderPresenter

added in version 22.1.0
RowHeaderPresenter getHeaderPresenter ()

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

Returns
RowHeaderPresenter

getRowViewHolder

added in version 22.1.0
RowPresenter.ViewHolder getRowViewHolder (Presenter.ViewHolder holder)

Returns the RowPresenter.ViewHolder from the given RowPresenter ViewHolder.

Parameters
holder Presenter.ViewHolder

Returns
RowPresenter.ViewHolder

getSelectEffectEnabled

added in version 22.1.0
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.

Returns
boolean

getSelectLevel

added in version 22.1.0
float getSelectLevel (Presenter.ViewHolder vh)

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

Parameters
vh Presenter.ViewHolder

Returns
float

getSyncActivatePolicy

added in version 22.1.0
int getSyncActivatePolicy ()

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

  • Default value SYNC_ACTIVATED_TO_EXPANDED
  • SYNC_ACTIVATED_TO_SELECTED
  • SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED
  • SYNC_ACTIVATED_CUSTOM

    Returns
    int

  • isUsingDefaultSelectEffect

    added in version 22.1.0
    boolean isUsingDefaultSelectEffect ()

    Returns true if this RowPresenter is using the default dimming effect. A subclass may (most likely) return false and override onSelectLevelChanged(ViewHolder).

    Returns
    boolean

    onBindViewHolder

    added in version 22.1.0
    void onBindViewHolder (Presenter.ViewHolder viewHolder, 
                    Object item)

    Binds a View to an item.

    Parameters
    viewHolder Presenter.ViewHolder

    item Object

    onCreateViewHolder

    added in version 22.1.0
    Presenter.ViewHolder onCreateViewHolder (ViewGroup parent)

    Creates a new View.

    Parameters
    parent ViewGroup

    Returns
    Presenter.ViewHolder

    onUnbindViewHolder

    added in version 22.1.0
    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.

    Parameters
    viewHolder Presenter.ViewHolder

    onViewAttachedToWindow

    added in version 22.1.0
    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 Presenter.ViewHolder: Holder of the view being attached

    onViewDetachedFromWindow

    added in version 22.1.0
    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 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

    setEntranceTransitionState

    added in version 22.1.0
    void setEntranceTransitionState (RowPresenter.ViewHolder holder, 
                    boolean afterEntrance)

    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 RowPresenter.ViewHolder: The ViewHolder of the row.

    afterEntrance boolean: true if children of row participating in entrance transition should be set to visible, false otherwise.

    setHeaderPresenter

    added in version 22.1.0
    void setHeaderPresenter (RowHeaderPresenter headerPresenter)

    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.

    Parameters
    headerPresenter RowHeaderPresenter

    setRowViewExpanded

    added in version 22.1.0
    void setRowViewExpanded (Presenter.ViewHolder holder, 
                    boolean expanded)

    Sets the expanded state of a Row view.

    Parameters
    holder Presenter.ViewHolder: The Row ViewHolder to set expanded state on.

    expanded boolean: True if the Row is expanded, false otherwise.

    setRowViewSelected

    added in version 22.1.0
    void setRowViewSelected (Presenter.ViewHolder holder, 
                    boolean selected)

    Sets the selected state of a Row view.

    Parameters
    holder Presenter.ViewHolder: The Row ViewHolder to set expanded state on.

    selected boolean: True if the Row is expanded, false otherwise.

    setSelectEffectEnabled

    added in version 22.1.0
    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.

    Parameters
    applyDimOnSelect boolean

    setSelectLevel

    added in version 22.1.0
    void setSelectLevel (Presenter.ViewHolder vh, 
                    float level)

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

    Parameters
    vh Presenter.ViewHolder

    level float

    setSyncActivatePolicy

    added in version 22.1.0
    void setSyncActivatePolicy (int syncActivatePolicy)

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

  • Default value SYNC_ACTIVATED_TO_EXPANDED
  • SYNC_ACTIVATED_TO_SELECTED
  • SYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED
  • SYNC_ACTIVATED_CUSTOM

    Parameters
    syncActivatePolicy int

  • Protected methods

    createRowViewHolder

    added in version 22.1.0
    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 ViewGroup: The parent View for the Row's view holder.

    Returns
    RowPresenter.ViewHolder A ViewHolder for the Row's View.

    dispatchItemSelectedListener

    added in version 22.1.0
    void dispatchItemSelectedListener (RowPresenter.ViewHolder vh, 
                    boolean selected)

    This method is only called from onRowViewSelected(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.

    Parameters
    vh RowPresenter.ViewHolder

    selected boolean

    initializeRowViewHolder

    added in version 22.1.0
    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 RowPresenter.ViewHolder: The ViewHolder to initialize for the Row.

    isClippingChildren

    added in version 24.1.0
    boolean isClippingChildren ()

    Returns true if the Row view should clip its children. The clipChildren flag is set on view in initializeRowViewHolder(ViewHolder). Note that Slide transition or explode transition need turn off clipChildren. Default value is false.

    Returns
    boolean

    onBindRowViewHolder

    added in version 22.1.0
    void onBindRowViewHolder (RowPresenter.ViewHolder vh, 
                    Object item)

    Binds the given row object to the given ViewHolder. Derived classes of RowPresenter overriding onBindRowViewHolder(ViewHolder, Object) must call through the super class's implementation of this method.

    Parameters
    vh RowPresenter.ViewHolder

    item Object

    onRowViewAttachedToWindow

    added in version 22.1.0
    void onRowViewAttachedToWindow (RowPresenter.ViewHolder vh)

    Invoked when the row view is attached to the window.

    Parameters
    vh RowPresenter.ViewHolder

    onRowViewDetachedFromWindow

    added in version 22.1.0
    void onRowViewDetachedFromWindow (RowPresenter.ViewHolder vh)

    Invoked when the row view is detached from the window.

    Parameters
    vh RowPresenter.ViewHolder

    onRowViewExpanded

    added in version 22.1.0
    void onRowViewExpanded (RowPresenter.ViewHolder vh, 
                    boolean expanded)

    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.

    Parameters
    vh RowPresenter.ViewHolder

    expanded boolean

    onRowViewSelected

    added in version 22.1.0
    void onRowViewSelected (RowPresenter.ViewHolder vh, 
                    boolean selected)

    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.

    Parameters
    vh RowPresenter.ViewHolder

    selected boolean

    onSelectLevelChanged

    added in version 22.1.0
    void onSelectLevelChanged (RowPresenter.ViewHolder vh)

    Callback when the select level changes. 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, the method isUsingDefaultSelectEffect() should also be overridden to disable the default dimming effect.

    Parameters
    vh RowPresenter.ViewHolder

    onUnbindRowViewHolder

    added in version 22.1.0
    void onUnbindRowViewHolder (RowPresenter.ViewHolder vh)

    Unbinds the given ViewHolder. Derived classes of RowPresenter overriding onUnbindRowViewHolder(ViewHolder) must call through the super class's implementation of this method.

    Parameters
    vh RowPresenter.ViewHolder