步骤3: 浏览支持Leanback的Android应用的内容
现在,让我们一起了解Fire TV Android应用的第一个基本组件:BrowseFragment。
在启动新创建的电视Android应用(使用Android Studio应用向导构建)后,可看到与下图非常类似的界面:
进行该操作时,我们看到的内容都在名为BrowseFragment
的类中生成。BrowseFragment
可创建一个界面,通过该界面,用户可轻松浏览应用中的内容(通常为视频或电影)。
BrowseFragment
自身其实由两个子片段组成:HeadersFragment
和RowsFragment
。
HeadersFragment
(可显示或隐藏)显示每一行内容的标题。通常,它包含该特定行中内容的“类别”。
RowsFragment
包含内容行,通常显示为视频缩略图。随后将介绍如何使用ObjectAdapters
填充内容行。
填充BrowseFragment
内容行是通过Adapters填充的横向列表,Adapters使用Presenters类(专门用于定义应用的外观)排列内容。
要填充单行内容,须使用ArrayObjectAdapter
(也称为listRowAdapter
)。此适配器显示单行内容。
在本示例中,假设定义一个名为“movie”的类,包含电影的所有信息(如名称和描述)。
最后,HeaderItem
可用于定义行标题。例如,您可以定义“comedy”类别。
以下是listRowAdapter
和HeaderItem
的直观形式:
假设存在一种SetupMovies
法,通过该方法可填充一个电影列表,然后将该列表传递给适配器。单行填充以及标题项定义所用的代码如下:
public class MainFragment extends BrowseFragment {
private void loadRows() {
//让我们生成影片列表
List list = MovieList.setupMovies();
//CardPresenter定义行中项目的UI
CardPresenter cardPresenter = new CardPresenter();
//创建行的适配器
ArrayObjectAdapter listRowAdapter
= new ArrayObjectAdapter(cardPresenter);
//让我们填充适配器
for (Movie movie:list) {
listRowAdapter.add(movie);
}
//创建此行的标题
HeaderItem header = new HeaderItem(0, "Comedy");
}
}
流媒体应用通常具有多行内容。因此,需要向BrowseFragment
添加多个适配器。最简单的方法是,添加可管理多个ListRowAdapters
的更高级别的适配器。将该类可称为RowsAdapter
。
RowsAdapter
包含多个ListRowAdapter
,并拥有自己的Presenter来定义内容行的显示方式。
可通过添加多个listRow来填充RowsAdapter
,从而合并listRowAdapters
和相关HeaderItems
。为此,可使用接收HeaderItem
的ListRow类和ArrayObjectAdapter
作为参数。
public class MainFragment extends BrowseFragment {
...
//创建一个RowsAdapter
ArrayObjectAdapter rowsAdapter
= new ArrayObjectAdapter(new ListRowPresenter());
//添加多行
rowsAdapter.add(new ListRow(headerItem1, listRowAdapter1));
rowsAdapter.add(new ListRow(headerItem2, listRowAdapter2));
setAdapter(mRowsAdapter);
}
调用setAdapter
将填充BrowseFragment
中的所有行,并显示主界面。
后续步骤
继续执行下一步: 步骤4: 通过Presenter编辑用户界面。