首页 > 其他分享 >Android开发 - ListRow类解析

Android开发 - ListRow类解析

时间:2024-08-03 14:39:14浏览次数:9  
标签:ListRow rowsAdapter add ArrayObjectAdapter HeaderItem new Android 解析

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 应用中显示水平滚动的列表。它能够帮助开发者组织内容提高用户体验,使得用户可以轻松浏览不同类别的内容

标签:ListRow,rowsAdapter,add,ArrayObjectAdapter,HeaderItem,new,Android,解析
From: https://www.cnblogs.com/ajunjava/p/18340507

相关文章

  • Android开发 - Presenter抽象类解析
    Presenter是什么职责:Presenter的主要职责是管理视图(通常是用户界面组件)的显示和行为它不处理数据的逻辑,而是专注于如何展示数据在Leanback库中的作用:Leanback库是为AndroidTV设计的一个库,提供了一些特殊的UI组件,比如BrowseFragment。Presenter在L......
  • 人工智能深度学习系列—深度学习中的边界框回归新贵:GHM(Generalized Histogram Loss)全
    文章目录1.背景介绍2.Loss计算公式3.使用场景4.代码样例5.总结1.背景介绍目标检测作为计算机视觉领域的核心技术之一,其精确度的提升一直是研究者们追求的目标。边界框回归作为目标检测中的关键步骤,其性能直接影响到检测的准确性。本文将详细介绍一种新型的边界......
  • Android 持久化技术
    目录1.用户登陆界面2.图书信息数据库和显示界面3.应用运行功能的截图4.源码1.用户登陆界面 (1)创建一个LoginActivity,对应的布局文件activity_login。 (2)具备两个TextView和两个EditText控件,分别用于显示和输入用户名和密码。 (3......
  • python3解析wav文件获取dtmf值
    操作系统:Windows10_x64Python版本:3.9.2从事FreeSwitch相关工作,大概率会遇得到DTMF,DTMF的传递方式有三种:In-bandRFC2833SIP-INFO使用RFC2833或SIP-INFO传递方式的DTMF,FreeSwitch可以在日志中打印出来,但遇到inband模式的DTMF,FreeSwitch的日志就打印不出来了。如果是会议......
  • 我的新书《Android系统多媒体进阶实战》正式发售了!!!
    我的新书要正式发售了,把链接贴在下面,感兴趣的朋友可以支持下。❶发售平台:当当,京东,抖音北航社平台,小红书,b站❷目前当当和京东已开启预售❸当当网https://u.dangdang.com/KIDHJ❹京东商城https://item.m.jd.com/product/10109083199634.html?gx=RnAoqRAjajbdh8lR5Q&gxd......
  • 159.336 application for Android
    159.336Assignment1Due14thAugust2024ForthisassignmentyouneedtowriteasimpledialerapplicationforAndroidtomakephonecalls.ThedialermusthavethefollowingUIelements:Anumberdisplaytoshowthephonenumberwhichwillbecalled.A......
  • android12编译三方提供的bin文件,通过selinux配置并实现rc开机启动
    为三方bin建立工程在vendor/自己公司目录下建立工程文件夹,我这里以CarpalyMonter工程,新建如下文件CarplayMonitor为三方bin文件Android.mk模块编译配置如下:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE:=carplaymonitor #模块名字LOCAL_SRC......
  • 【Java】Jsoup 解析HTML报告
    一、需求背景有好几种报告文件,目前是人肉找报告信息填到Excel上生成统计信息跟用户交流了下需求和提供的几个文件,发现都是html文件其实所谓的报告的文件,就是一些本地可打开的静态资源,里面也有js、img等等二、方案选型前面老板一直说是文档解析,我寻思这不就是写爬虫吗....因......
  • Android开发 - BrowseFragment 类解析
    BrowseFragment是什么例如电视应用屏幕上有很多行,每行显示一组视频,比如“热门电影”、“新剧集”、“推荐给你”等。每行可以左右滚动,显示不同的视频缩略图。BrowseFragment就是用来创建这种界面的主要功能每行有一个标题:告诉你这行内容是什么,比如“热门电影”每行可以滚......
  • Android开发 - RecyclerView 类详解
    什么是RecyclerViewRecyclerView是Android的一个控件,用来展示长列表或网格的内容,它比以前的ListView更加灵活和高效列表展示:想象你在手机上浏览一个长长的商品列表或图片网格。RecyclerView就是用来展示这样的内容的控件高效显示:如果你有一万件商品,RecyclerView不会一......