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 |
![]() |
![]() |
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 subclassRowPresenter.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:-
A row is selected via
setRowViewSelected(Presenter.ViewHolder, boolean)
. The event is triggered immediately when there is a row selection change before the selection animation is started. Selected status may control activated status of the row (see "Activated status" below). Subclasses of RowPresenter may overrideonRowViewSelected(ViewHolder, boolean)
. -
A row is expanded to full height via
setRowViewExpanded(Presenter.ViewHolder, boolean)
when BrowseFragment hides fast lane on the left. The event is triggered immediately before the expand animation is started. Row title is shown when row is expanded. Expanded status may control activated status of the row (see "Activated status" below). Subclasses of RowPresenter may overrideonRowViewExpanded(ViewHolder, boolean)
.
Activated status
The activated status of a row is applied to the row view and its children viasetActivated(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:
SYNC_ACTIVATED_TO_EXPANDED
Activated status is synced with row expanded statusSYNC_ACTIVATED_TO_SELECTED
Activated status is synced with row selected statusSYNC_ACTIVATED_TO_EXPANDED_AND_SELECTED
Activated status is set to true when both expanded and selected status are trueSYNC_ACTIVATED_CUSTOM
Activated status is not controlled by selected status or expanded status, application can control activated status by its own. Application should callsetActivated(boolean)
to change activated status of row view.
User events
RowPresenter providesOnItemViewSelectedListener
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 |
Constants | |
---|---|
int |
SYNC_ACTIVATED_CUSTOM
Don't synchronize row view activated status with selected status or expanded status,
application will do its own through |
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 |
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 |
final
Presenter.ViewHolder
|
onCreateViewHolder(ViewGroup parent)
Creates a new |
final
void
|
onUnbindViewHolder(Presenter.ViewHolder viewHolder)
Unbinds a |
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
|
void
|
initializeRowViewHolder(RowPresenter.ViewHolder vh)
Called after a |
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 | |
---|---|
![]()
android.support.v17.leanback.widget.Presenter
|