Android开发 - ListRow类TV中开发水平滚动视图解析

ListRow是什么

  • ListRowAndroid TV 开发中的一个类,用于在应用的用户界面中显示水平滚动的项(如卡片、图像等)列表。它通常在一个 BrowseFragmentRowsFragment 中使用,以组织显示内容

    // 创建一个 BrowseFragment 实例
    BrowseFragment browseFragment = new BrowseFragment();
    // 创建一个 ArrayObjectAdapter,并使用 ListRowPresenter 作为呈现器
    ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
    // 创建一个 HeaderItem,代表行的标题
    HeaderItem headerItem = new HeaderItem(0, "热门电影");
    // 创建一个 ArrayObjectAdapter,用于 ListRow 的数据
    ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new MoviePresenter());
    // 添加电影数据到适配器
    listRowAdapter.add(new Movie(R.drawable.poster1, "电影 1"));
    listRowAdapter.add(new Movie(R.drawable.poster2, "电影 2"));
    // 将适配器添加到 ListRow,并添加到 rowsAdapter
    ListRow listRow = new ListRow(headerItem, listRowAdapter);
    rowsAdapter.add(listRow);
    // 设置适配器到 BrowseFragment
    browseFragment.setAdapter(rowsAdapter);
    

ListRow的作用

  • 容纳一个标题和一个水平列表

    • 每个 ListRow 通常包括一个标题(HeaderItem)和一个包含项的水平列表(ObjectAdapter)

      ListRow listRow = new ListRow(headerItem, listRowAdapter);
      
  • 适用于丰富的媒体应用

    • 在像 NetflixAmazon Prime 这样的媒体应用中,ListRow 通常用于显示不同类别的电影或电视节目每个类别(如'热门电影'和'推荐电影'可以水平滚动的栏目<列表>)对应一个 ListRow
  • 提升用户体验

    • 通过将内容分组为水平滚动列表,用户可以轻松浏览不同的内容类别,而不需要在一个长垂直列表中滚动

ListRow的使用

代码示例解析

// 创建 HeaderItem:用于设置 ListRow 的标题
HeaderItem header = new HeaderItem(0, "My ListRow Title");

// 创建 ObjectAdapter 并添加项:用于存储和管理 ListRow 中的项
ArrayObjectAdapter adapter = new ArrayObjectAdapter(new CardPresenter());//负责将数据项绑定到视图上
adapter.add(new MyItem("Item 1"));
adapter.add(new MyItem("Item 2"));
adapter.add(new MyItem("Item 3"));

// 创建 ListRow:将 HeaderItem 和 ObjectAdapter 关联在一起,形成一个带标题的水平列表
ListRow listRow = new ListRow(header, adapter);

// 将 ListRow 添加到 RowsAdapter 中
ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());// ListRowPresenter:用于显示 ListRow
rowsAdapter.add(listRow);

// 将 RowsAdapter 设置到 BrowseFragment 或 RowsFragment 中
browseFragment.setAdapter(rowsAdapter);

简单的例子应用

  • 假设你在开发一个视频流媒体应用,有以下几个类别推荐、最新电影 和 热门电视剧你可以使用 ListRow 为每个类别创建一个水平滚动的列表

    // 推荐
    HeaderItem recommendedHeader = new HeaderItem(0, "Recommended");
    ArrayObjectAdapter recommendedAdapter = new ArrayObjectAdapter(new CardPresenter());
    recommendedAdapter.add(new Video("Video 1"));
    recommendedAdapter.add(new Video("Video 2"));
    ListRow recommendedRow = new ListRow(recommendedHeader, recommendedAdapter);
    
    // 最新电影
    HeaderItem latestMoviesHeader = new HeaderItem(1, "Latest Movies");
    ArrayObjectAdapter latestMoviesAdapter = new ArrayObjectAdapter(new CardPresenter());
    latestMoviesAdapter.add(new Video("Movie 1"));
    latestMoviesAdapter.add(new Video("Movie 2"));
    ListRow latestMoviesRow = new ListRow(latestMoviesHeader, latestMoviesAdapter);
    
    // 热门电视剧
    HeaderItem popularShowsHeader = new HeaderItem(2, "Popular Shows");
    ArrayObjectAdapter popularShowsAdapter = new ArrayObjectAdapter(new CardPresenter());
    popularShowsAdapter.add(new Video("Show 1"));
    popularShowsAdapter.add(new Video("Show 2"));
    ListRow popularShowsRow = new ListRow(popularShowsHeader, popularShowsAdapter);
    
    // 添加到 RowsAdapter
    ArrayObjectAdapter rowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
    rowsAdapter.add(recommendedRow);
    rowsAdapter.add(latestMoviesRow);
    rowsAdapter.add(popularShowsRow);
    
    // 设置 Adapter 到 BrowseFragment
    browseFragment.setAdapter(rowsAdapter);
    

总结

ListRow 是一个非常有用的工具,用于在 Android TV 应用中显示水平滚动的列表。它能够帮助开发者组织内容提高用户体验,使得用户可以轻松浏览不同类别的内容

posted @ 2024-08-03 14:43  阿俊学JAVA  阅读(2)  评论(0编辑  收藏  举报