安卓开发 原生View 垂直recyclerview 嵌套水平recyclerview 帮我写完整kotlin 代码

时间: 2024-03-01 20:55:29 浏览: 24
好的,以下是一个垂直 RecyclerView 嵌套水平 RecyclerView 的 Kotlin 代码示例: ``` class MainActivity : AppCompatActivity() { private lateinit var verticalRecyclerView: RecyclerView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 初始化垂直 RecyclerView verticalRecyclerView = findViewById(R.id.verticalRecyclerView) verticalRecyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false) val verticalAdapter = VerticalAdapter() verticalRecyclerView.adapter = verticalAdapter // 设置垂直 RecyclerView 的数据源 val verticalDataList = mutableListOf<VerticalItem>() verticalDataList.add(VerticalItem("Item 1")) verticalDataList.add(VerticalItem("Item 2")) verticalDataList.add(VerticalItem("Item 3")) verticalAdapter.setData(verticalDataList) } // 垂直 RecyclerView 的适配器 inner class VerticalAdapter : RecyclerView.Adapter<VerticalAdapter.VerticalViewHolder>() { private var dataList = mutableListOf<VerticalItem>() fun setData(dataList: List<VerticalItem>) { this.dataList.clear() this.dataList.addAll(dataList) notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VerticalViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_vertical, parent, false) return VerticalViewHolder(view) } override fun onBindViewHolder(holder: VerticalViewHolder, position: Int) { val verticalItem = dataList[position] holder.titleTextView.text = verticalItem.title // 初始化水平 RecyclerView val horizontalLayoutManager = LinearLayoutManager(holder.itemView.context, RecyclerView.HORIZONTAL, false) holder.horizontalRecyclerView.layoutManager = horizontalLayoutManager val horizontalAdapter = HorizontalAdapter() holder.horizontalRecyclerView.adapter = horizontalAdapter // 设置水平 RecyclerView 的数据源 val horizontalDataList = mutableListOf<HorizontalItem>() horizontalDataList.add(HorizontalItem("Subitem 1")) horizontalDataList.add(HorizontalItem("Subitem 2")) horizontalDataList.add(HorizontalItem("Subitem 3")) horizontalAdapter.setData(horizontalDataList) } override fun getItemCount(): Int { return dataList.size } inner class VerticalViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val titleTextView: TextView = itemView.findViewById(R.id.titleTextView) val horizontalRecyclerView: RecyclerView = itemView.findViewById(R.id.horizontalRecyclerView) } } // 水平 RecyclerView 的适配器 inner class HorizontalAdapter : RecyclerView.Adapter<HorizontalAdapter.HorizontalViewHolder>() { private var dataList = mutableListOf<HorizontalItem>() fun setData(dataList: List<HorizontalItem>) { this.dataList.clear() this.dataList.addAll(dataList) notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HorizontalViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_horizontal, parent, false) return HorizontalViewHolder(view) } override fun onBindViewHolder(holder: HorizontalViewHolder, position: Int) { val horizontalItem = dataList[position] holder.titleTextView.text = horizontalItem.title } override fun getItemCount(): Int { return dataList.size } inner class HorizontalViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val titleTextView: TextView = itemView.findViewById(R.id.titleTextView) } } } // 数据类 data class VerticalItem(val title: String) data class HorizontalItem(val title: String) ``` 其中,垂直 RecyclerView 使用 `VerticalAdapter` 作为适配器,水平 RecyclerView 使用 `HorizontalAdapter` 作为适配器,分别用两个数据类 `VerticalItem` 和 `HorizontalItem` 表示它们的数据项。这个示例代码仅供参考,具体实现还需要根据项目需求进行调整。

相关推荐

最新推荐

recommend-type

Android 使用Kotlin自定义View的方法教程

最近想加强一下自定义view方面的学习,正好也在学习Kotlin,所以就尝试着用Kotlin写一下简单的自定义view,下面这篇文章主要给大家介绍了关于Android使用Kotlin自定义View的方法教程,需要的朋友可以参考下。
recommend-type

Android中使用Kotlin实现一个简单的登录界面

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。接下来本文通过实例代码给大家讲解Android中使用Kotlin实现一个简单的登录界面,一起看看吧
recommend-type

Kotlin Android通用框架设计与完整电商APP开发的快速搭建项目服务端说明文档

Kotlin Android通用框架设计与完整电商APP开发,该视频资源的服务端项目快速搭建项目说明文档,看到很多找不到,共享一下;
recommend-type

MATLAB设计_对JSON文件编码解码的工具箱.zip

毕业设计MATLAB
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依