added in version 22.1.0

Support classes providing low level Leanback user interface building blocks: widgets and helpers.

The core interface to the developer’s model is the ObjectAdapter. It is similar to Adapter and the RecyclerView Adapter, but separates iterating items from presenting them as Views. Concrete implementations include ArrayObjectAdapter and CursorObjectAdapter, but a developer is free to use a subclass of an ObjectAdapter to iterate over any existing Object hierarchy.

A Presenter creates Views and binds data from an Object to those Views. This is the complementary piece to ObjectAdapter that corresponds to existing Android adapter classes. The benefit to separating out a Presenter is that we can use it to generate Views outside of the context of an adapter. For example, a UI may represent data from a single Object in several places at once. Each View that needs to be generated can be produced by a different Presenter, while the Object is retrieved from the ObjectAdapter once.

A PresenterSelector determines which Presenter to use for a given Object from an ObjectAdapter. Two common cases are when an ObjectAdapter uses the same View type for every element (SinglePresenterSelector), and when the Presenter is determined by the Java class of the element (ClassPresenterSelector). A developer is able to implement any selection logic as a PresenterSelector. For example, if all the elements of an ObjectAdapter have the same type, but certain elements are to be rendered using a 'promotional content' view in the developer’s application, the PresenterSelector may inspect the fields of each element before choosing the appropriate Presenter.

The basic navigation model for Leanback is that of a vertical list of rows, each of which may be a horizontal list of items. Therefore, Leanback uses ObjectAdapters both for defining the horizontal data items as well as the list of rows themselves.

Leanback defines a few basic data model classes for rows: the Row, which defines the abstract concept of a row with a header; and ListRow, a concrete Row implementation that uses an ObjectAdapter to present a horizontal list of items. The corresponding presenter for the ListRow is the ListRowPresenter.

Other types of Rows and corresponding RowPresenters are provided; however the application may define a custom subclass of Row and RowPresenter.


BaseGridView.OnKeyInterceptListener Listener for intercepting key dispatch events. 
BaseGridView.OnMotionInterceptListener Listener for intercepting generic motion dispatch events. 
BaseGridView.OnTouchInterceptListener Listener for intercepting touch dispatch events. 
BaseOnItemViewClickedListener<T> Interface for receiving notification when an item view holder is clicked. 
BaseOnItemViewSelectedListener<T> Interface for receiving notification when a row or item becomes selected. 
BrowseFrameLayout.OnChildFocusListener Interface for managing child focus in a BrowseFrameLayout. 
BrowseFrameLayout.OnFocusSearchListener Interface for selecting a focused view in a BrowseFrameLayout when the system focus finder couldn't find a view to focus. 
FacetProvider This is the query interface to supply optional features(aka facets) on an object without the need of letting the object to subclass or implement java interfaces. 
FacetProviderAdapter Optional interface that implemented by RecyclerView.Adapter to query FacetProvider for a given type within Adapter. 
FocusHighlight Interface for highlighting the item that has focus. 
FragmentAnimationProvider FragmentAnimationProvider supplies animations for use during a fragment's onCreateAnimator callback. 
ImeKeyMonitor Interface for an EditText subclass that can delegate calls to onKeyPreIme up to a registered listener. 
ImeKeyMonitor.ImeKeyListener Listener interface for key events intercepted pre-IME by edit text objects. 
MultiActionsProvider An interface implemented by the user if they wish to provide actions for a media item row to be displayed by an AbstractMediaItemPresenter
OnActionClickedListener Interface for receiving notification when an Action is clicked. 
OnChildLaidOutListener Interface for receiving notification when a child of this ViewGroup has been laid out. 
OnChildSelectedListener This interface was deprecated in API level 24.1.0. Use OnChildViewHolderSelectedListener  
OnItemViewClickedListener Interface for receiving notification when a item view holder is clicked. 
OnItemViewSelectedListener Interface for receiving notification when a row or item becomes selected. 
PlaybackSeekUi Interface to be implemented by UI component to support seeking. 
SearchBar.SearchBarListener Interface for receiving notification of search query changes. 
SearchBar.SearchBarPermissionListener Interface that handles runtime permissions requests. 
SearchEditText.OnKeyboardDismissListener Interface for receiving notification when the keyboard is dismissed. 
SpeechRecognitionCallback This interface was deprecated in API level 27.1.0. Launching voice recognition activity is no longer supported. App should declare android.permission.RECORD_AUDIO in AndroidManifest file. See details in SearchSupportFragment.  
TitleViewAdapter.Provider Interface to be implemented by a customized widget class to implement TitleViewAdapter
ViewHolderTask Interface for schedule task on a ViewHolder. 


AbstractDetailsDescriptionPresenter An abstract Presenter for rendering a detailed description of an item. 
AbstractDetailsDescriptionPresenter.ViewHolder The ViewHolder for the AbstractDetailsDescriptionPresenter
AbstractMediaItemPresenter Abstract Presenter class for rendering media items in a playlist format. 
AbstractMediaItemPresenter.ViewHolder The ViewHolder for the AbstractMediaItemPresenter
AbstractMediaListHeaderPresenter Abstract presenter class for rendering the header for a list of media items in a playlist. 
AbstractMediaListHeaderPresenter.ViewHolder The ViewHolder for the AbstractMediaListHeaderPresenter
Action An action contains one or two lines of text, an optional image and an optional id. 
ArrayObjectAdapter An ObjectAdapter implemented with an ArrayList
BaseCardView A card style layout that responds to certain state changes. 
BaseCardView.LayoutParams Per-child layout information associated with BaseCardView. 
BaseGridView An abstract base class for vertically and horizontally scrolling lists. 
BrowseFrameLayout A ViewGroup for managing focus behavior between overlapping views. 
ClassPresenterSelector A ClassPresenterSelector selects a Presenter based on the item's Java class. 
ControlButtonPresenterSelector Displays primary and secondary controls for a PlaybackControlsRow
CursorObjectAdapter An ObjectAdapter implemented with a Cursor
DetailsOverviewLogoPresenter Presenter that responsible to create a ImageView and bind to DetailsOverviewRow. 
DetailsOverviewLogoPresenter.ViewHolder ViewHolder for Logo view of DetailsOverviewRow. 
DetailsOverviewRow An overview Row for a details fragment. 
DetailsOverviewRow.Listener Listener for changes of DetailsOverviewRow. 
DetailsOverviewRowPresenter This class was deprecated in API level 24.1.0. Use FullWidthDetailsOverviewRowPresenter  
DetailsOverviewRowPresenter.ViewHolder A ViewHolder for the DetailsOverviewRow. 
DetailsParallax Subclass of Parallax object that tracks overview row's top and bottom edge in DetailsFragment or DetailsSupportFragment. 
DiffCallback<Value> Callback that informs ArrayObjectAdapter how to compute list updates when using DiffUtil in setItems(List, DiffCallback) method. 
DividerPresenter DividerPresenter provides a default presentation for DividerRow in HeadersFragment. 
DividerRow Used to represent divider in HeadersFragment. 
FocusHighlightHelper Sets up the highlighting behavior when an item gains focus. 
FullWidthDetailsOverviewRowPresenter Renders a DetailsOverviewRow to display an overview of an item. 
FullWidthDetailsOverviewRowPresenter.Listener Listeners for events on ViewHolder. 
FullWidthDetailsOverviewRowPresenter.ViewHolder A ViewHolder for the DetailsOverviewRow. 
FullWidthDetailsOverviewSharedElementHelper Helper class to assist delayed shared element activity transition for view created by FullWidthDetailsOverviewRowPresenter
GuidanceStylist GuidanceStylist is used within a GuidedStepFragment to display contextual information for the decision(s) required at that step. 
GuidanceStylist.Guidance A data class representing contextual information for a GuidedStepFragment
GuidedAction A data class which represents an action within a GuidedStepFragment
GuidedAction.Builder Builds a GuidedAction object. 
GuidedAction.BuilderBase<B extends BuilderBase> Base builder class to build a GuidedAction object. 
GuidedActionDiffCallback DiffCallback used for GuidedActions, see setActionsDiffCallback(DiffCallback)
GuidedActionEditText A custom EditText that satisfies the IME key monitoring requirements of GuidedStepFragment. 
GuidedActionsStylist GuidedActionsStylist is used within a GuidedStepFragment to supply the right-side panel where users can take actions. 
GuidedActionsStylist.ViewHolder ViewHolder caches information about the action item layouts' subviews. 
GuidedDatePickerAction Subclass of GuidedAction that can choose a date. 
GuidedDatePickerAction.Builder Builder class to build a GuidedDatePickerAction. 
GuidedDatePickerAction.BuilderBase<B extends BuilderBase> Base Builder class to build GuidedDatePickerAction. 
HeaderItem A header item describes the metadata of a Row, such as a category of media items. 
HorizontalGridView A ViewGroup that shows items in a horizontal scrolling list. 
HorizontalHoverCardSwitcher A helper class for showing a hover card view below a HorizontalGridView
ImageCardView A subclass of BaseCardView with an ImageView as its main region. 
ItemAlignmentFacet Optional facet provided by RecyclerView.Adapter or RecyclerView.ViewHolder for use in HorizontalGridView and VerticalGridView
ItemAlignmentFacet.ItemAlignmentDef Definition of an alignment position under a view. 
ItemBridgeAdapter Bridge from Presenter to RecyclerView.Adapter
ItemBridgeAdapter.AdapterListener Interface for listening to ViewHolder operations. 
ItemBridgeAdapter.ViewHolder ViewHolder for the ItemBridgeAdapter. 
ItemBridgeAdapter.Wrapper Interface for wrapping a view created by a Presenter into another view. 
ItemBridgeAdapterShadowOverlayWrapper A wrapper class working with ItemBridgeAdapter to wrap item view in a ShadowOverlayContainer
ListRow A Row composed of a optional HeaderItem, and an ObjectAdapter describing the items in the list. 
ListRowHoverCardView ListRowHoverCardView contains a title and description. 
ListRowPresenter ListRowPresenter renders ListRow using a HorizontalGridView hosted in a ListRowView
ListRowPresenter.SelectItemViewHolderTask A task on the ListRowPresenter.ViewHolder that can select an item by position in the HorizontalGridView and perform an optional item task on it. 
ListRowPresenter.ViewHolder ViewHolder for the ListRowPresenter. 
ListRowView ListRowView is a ViewGroup which always contains a HorizontalGridView, and may optionally include a hover card. 
MultiActionsProvider.MultiAction MultiAction represents an action that can have multiple states. 
ObjectAdapter Base class adapter to be used in leanback activities. 
ObjectAdapter.DataObserver A DataObserver can be notified when an ObjectAdapter's underlying data changes. 
OnChildViewHolderSelectedListener Interface for receiving notification when a child of this ViewGroup has been selected. 
PageRow Used to represent content spanning full page. 
Parallax<PropertyT extends Property> Parallax tracks a list of dynamic Propertys typically representing foreground UI element positions on screen. 
Parallax.FloatProperty FloatProperty provide access to an index based integer type property inside Parallax
Parallax.IntProperty IntProperty provide access to an index based integer type property inside Parallax
Parallax.PropertyMarkerValue<PropertyT> Class holding a fixed value for a Property in Parallax
ParallaxEffect ParallaxEffect class drives changes in ParallaxTarget in response to changes in variables defined in Parallax
ParallaxTarget ParallaxTarget is responsible for updating the target through the update(float) method or the directUpdate(Number) method when isDirectMapping() is true. 
ParallaxTarget.DirectPropertyTarget<T, V extends Number> DirectPropertyTarget is to support direct mapping into either Integer Property or Float Property. 
ParallaxTarget.PropertyValuesHolderTarget PropertyValuesHolderTarget is an implementation of ParallaxTarget that uses PropertyValuesHolder to update the target object. 
PlaybackControlsRow A Row of playback controls to be displayed by a PlaybackControlsRowPresenter
PlaybackControlsRow.ClosedCaptioningAction An action for displaying a CC (Closed Captioning) icon. 
PlaybackControlsRow.FastForwardAction An action displaying an icon for fast forward. 
PlaybackControlsRow.HighQualityAction An action for displaying a HQ (High Quality) icon. 
PlaybackControlsRow.MoreActions An action displaying an icon for "more actions". 
PlaybackControlsRow.MultiAction Base class for an action comprised of a series of icons. 
PlaybackControlsRow.OnPlaybackProgressCallback Listener for progress or duration change. 
PlaybackControlsRow.PictureInPictureAction An action displaying an icon for picture-in-picture. 
PlaybackControlsRow.PlayPauseAction An action displaying icons for play and pause. 
PlaybackControlsRow.RepeatAction An action for displaying three repeat states: none, one, or all. 
PlaybackControlsRow.RewindAction An action displaying an icon for rewind. 
PlaybackControlsRow.ShuffleAction An action for displaying a shuffle icon. 
PlaybackControlsRow.SkipNextAction An action displaying an icon for skip next. 
PlaybackControlsRow.SkipPreviousAction An action displaying an icon for skip previous. 
PlaybackControlsRow.ThumbsAction A base class for displaying a thumbs action. 
PlaybackControlsRow.ThumbsDownAction An action displaying an icon for thumbs down. 
PlaybackControlsRow.ThumbsUpAction An action displaying an icon for thumbs up. 
PlaybackControlsRowPresenter A PlaybackControlsRowPresenter renders a PlaybackControlsRow to display a series of playback control buttons. 
PlaybackControlsRowPresenter.ViewHolder A ViewHolder for the PlaybackControlsRow. 
PlaybackRowPresenter Subclass of RowPresenter that can define the desired behavior when the view reappears. 
PlaybackRowPresenter.ViewHolder This container is used for trapping click events and passing them to the playback controls. 
PlaybackSeekDataProvider Class to be implemented by app to provide seeking data and thumbnails to UI. 
PlaybackSeekDataProvider.ResultCallback Client to receive result for getThumbnail(int, ResultCallback)
PlaybackSeekUi.Client Client (e.g. 
PlaybackTransportRowPresenter A PlaybackTransportRowPresenter renders a PlaybackControlsRow to display a series of playback control buttons. 
PlaybackTransportRowPresenter.ViewHolder A ViewHolder for the PlaybackControlsRow supporting seek UI. 
Presenter A Presenter is used to generate Views and bind Objects to them on demand. 
Presenter.ViewHolder ViewHolder 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. 
Presenter.ViewHolderTask Base class to perform a task on Presenter.ViewHolder. 
PresenterSelector A PresenterSelector is used to obtain a Presenter for a given Object. 
PresenterSwitcher An abstract helper class that switches a view in its parent view using a PresenterSelector
RecyclerViewParallax Implementation of Parallax class for RecyclerView
RecyclerViewParallax.ChildPositionProperty Subclass of Parallax.IntProperty
Row The base class for all rows. 
RowHeaderPresenter RowHeaderPresenter provides a default presentation for HeaderItem using a RowHeaderView and optionally a TextView for description. 
RowHeaderPresenter.ViewHolder A ViewHolder for the RowHeaderPresenter. 
RowHeaderView RowHeaderView is a header text view. 
RowPresenter An abstract Presenter that renders an Object in RowsFragment, the object can be subclass Row or a generic one. 
RowPresenter.ViewHolder A ViewHolder for a Row
SearchBar A search widget containing a search orb and a text entry view. 
SearchEditText EditText widget that monitors keyboard changes. 

A widget that draws a search affordance, represented by a round background and an icon. 

SearchOrbView.Colors A set of colors used to display the search orb. 
SectionRow Used to represent section item in HeadersFragment. 
ShadowOverlayContainer Provides an SDK version-independent wrapper to support shadows, color overlays, and rounded corners. 
ShadowOverlayHelper ShadowOverlayHelper is a helper class for shadow, overlay color and rounded corner. 
ShadowOverlayHelper.Builder Builder for creating ShadowOverlayHelper. 
ShadowOverlayHelper.Options Option values for ShadowOverlayContainer. 
SinglePresenterSelector A PresenterSelector that always returns the same Presenter
SparseArrayObjectAdapter An ObjectAdapter implemented with a SparseArray
SpeechOrbView A subclass of SearchOrbView that visualizes the state of an ongoing speech recognition. 
TitleHelper Helper for managing TitleView, including transitions and focus movement. 
TitleView Title view for a leanback fragment. 
TitleViewAdapter This class allows a customized widget class to implement TitleViewAdapter.Provider and expose TitleViewAdapter methods to containing fragment (e.g. 
VerticalGridPresenter A presenter that renders objects in a VerticalGridView
VerticalGridPresenter.ViewHolder ViewHolder for the VerticalGridPresenter. 
VerticalGridView A ViewGroup that shows items in a vertically scrolling list.