【移动应用开发】界面设计(二)实现水果列表页面

续上一篇博客

【移动应用开发】界面设计(一)实现登录页面-CSDN博客

目录

一、采用ViewBinding实现一个RecyclerView

1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding

(1)在app/build.gradle中添加依赖

(2)在app/build.gradle中打开viewBinding功能

(3)点击同步Sync,同步项目

1.2 在layout目录下创建一个fruit_item.xml

(1)设置为LinearLayout

(2)插入ImageView

(3)插入TextView

1.3 修改activity_main.xml

(1)将布局改为LinearLayout

(2)插入RecyclerView控件

1.4 新建一个命名为Fruit的类

(1)Fruit类

(2)Kotlin类

1.5 新建一个名为FruitAdapter的适配器类

(1)同理,新建一个类文件,命名为FruitAdapter

(2)重写onCreateViewHolder、onBindViewHolder和getItemCount方法

1.6 修改MainActivity类

(1)新增一个私有val变量fruitList

(2)新增一个私有var变量binding

(3)修改onCreate()方法

(4)新建私有方法initFruits()

(5)修改onCreate()方法

(6)创建一个layoutManager

(7)创建一个adapter

1.7 实现点击事件

(1)修改MainActivity类

(2)运行截图

二、心得体会

2.1 如需加入RecyclerView控件,需要对工程环境做何种配置?

(1)在build.grade文件中导入依赖

(2) 如果想用视图绑定模式,同样在build.grade文件中设置

2.2 设计一个RecyclerView,其中每一个item是否需要一个自定义布局?在实验中该自定义布局是哪个文件?对应的,是否需要一个实体类?布局的控件和实体类的字段是否需要对应?

2.3 为RecyclerView创建一个Fruit适配器,创建一个内置类ViewHolder,是怎样获取自定义布局中的实例?

2.4 如何对ViewHolder中的实例进行数据绑定的?

2.5 如何在Activity中对RecyclerView的布局方式进行设置?

2.6 如何在Activity中对RecyclerView的适配器绑定为Fruit适配器?

2.7 如何打开ViewBinding功能?

2.8 如果在Activity的布局中有一个按钮,我们应如何在onCreate中添加按钮的点击监听事件?

2.9 在RecyclerView的Adapter中,我们可以在ViewHolder内置类中传入item布局的binding。


一、采用ViewBinding实现一个RecyclerView

1.1 在app/build.gradle中添加recyclerview依赖,并打开viewBinding

(1)在app/build.gradle中添加依赖

其中版本号1.x.0将会自动更新。

(2)在app/build.gradle中打开viewBinding功能

在android字段下将viewBinding设置为true

(3)点击同步Sync,同步项目

1.2 在layout目录下创建一个fruit_item.xml

(1)设置为LinearLayout

宽度为match_parent

高度为80dp

layout_margin设为5dp

(2)插入ImageView

id为fruitImage

宽和高均为40dp

layout_gravity为center_vertical

marginLeft为10dp

(3)插入TextView

id为fruitName

宽和高均为wrap_content

layout_gravity为center_vertical

marginLeft为10dp

1.3 修改activity_main.xml

(1)将布局改为LinearLayout

宽和高match_parent

orientation设为vertical

(2)插入RecyclerView控件

androidx.recyclerview.widget.RecyclerView

宽度高度均设为match_parent

id为recyclerView

1.4 新建一个命名为Fruit的类

(1)Fruit类

在app/src/main/java/com.example.recyclerviewtest下右键newàKotlin Class/File

(2)Kotlin类

(以下使用Kotlin来编写)

1.5 新建一个名为FruitAdapter的适配器类

(1)同理,新建一个类文件,命名为FruitAdapter

该类传入参数fruitList,约束为一个列表类型List<Ranking>,继承RecylcerView.Adapter

定义一个内置类,传入一个FruitItemBinding的binding绑定

加入两个变量fruitImage和fruitName,并绑定为FuitItemBinding的fruitImage和fruitName

(2)重写onCreateViewHolder、onBindViewHolder和getItemCount方法

onCreateViewHolder将fruit_item的绑定类FruitItemBinding展开,然后新建ViewHolder并传回;

onBindViewHolder将ViewHolder的两个变量fruitImage和fruiteName进行数据绑定。

1.6 修改MainActivity类

(1)新增一个私有val变量fruitList

类型为ArrayList<Fruit>

(2)新增一个私有var变量binding

设置为稍后初始化,绑定为ActivityMainBinding,用于调用activity_main.xml对应的Binding类

(3)修改onCreate()方法

将ActivityMainBinding传入binding,然后用binding.root来设置ContentView

(4)新建私有方法initFruits()

新增fruitList的列项,将水果名以及对应的图片添加进去

(5)修改onCreate()方法

使用initFruits()方法进行fruitList的初始化

(6)创建一个layoutManager

传入binding.recyclerView.layoutManager中

(7)创建一个adapter

传入binding.recyclerView.adapter中

1.7 实现点击事件

(1)修改MainActivity类

在FruitAdapteronCreateViewHolder中,打开viewHolder中的控件监听事件

viewHolder.itemView.setOnClickListener{};

在监听事件中,取得点击位置

val position = viewHolder. bindingAdapterPosition

在监听事件中,实现Toast功能,注意判断位置是否为空

(2)运行截图

点击Pear,显示成功

鼠标往下滑,页面实现滚动,点击最后一个水果,成功弹窗对应水果名称。

二、心得体会

2.1 如需加入RecyclerView控件,需要对工程环境做何种配置?

(1)在build.grade文件中导入依赖

(2) 如果想用视图绑定模式,同样在build.grade文件中设置

2.2 设计一个RecyclerView,其中每一个item是否需要一个自定义布局?在实验中该自定义布局是哪个文件?对应的,是否需要一个实体类?布局的控件和实体类的字段是否需要对应?

(1)其中每一个item都有对应的自定义布局,根据不同的业务需求显示不同的效果;

(2)本实验对应的自定义布局是fruit_item.xml;

(3)一般需要一个实体类去维护每个item的信息,封装成对象,作为适配器的适配类型,便于开发,同时含义也更清晰;

(4)布局的控件和实体类的字段不需要对应,在操作的时候我们是手动设置的

2.3 为RecyclerView创建一个Fruit适配器,创建一个内置类ViewHolder,是怎样获取自定义布局中的实例?

每一个item对应着一个ViewHolder,而每一个ViewHolder对应着item.xml文件中的组件。

当页面刚加载或者上下滚动的时候 会调用onCreateViewHolder方法。而该方法返回了ViewHolder对象。然后调用onBindViewHolder方法,我们在里面根据数据位置与当前item的viewholder设置了对应的值,然后就可以对应上了。

2.4 如何对ViewHolder中的实例进行数据绑定的?

当获取完viewHolder之后会去调用onBindViewHolder方法,在这个方法里面根数当前item的viewholder设置了对应的值,这样就可以对应上了。

2.5 如何在Activity中对RecyclerView的布局方式进行设置?

(1)动态载入布局文件,由于MainActivity与activity_layout.xml是对应的,首先要获取xml文件对象,然后通过inflate进行实例化

(2)设置布局管理器

2.6 如何在Activity中对RecyclerView的适配器绑定为Fruit适配器?

直接实例化一个对象并将它设置为适配器即可。

2.7 如何打开ViewBinding功能?

在项目工程模块的build.gradle中加入以下配置

2.8 如果在Activity的布局中有一个按钮,我们应如何在onCreate中添加按钮的点击监听事件?

(1)在 Activity 中进行延迟初始化的 binding。首先,确保在 build.gradle 文件中启用 viewBinding 选项,然后在 Activity 的类中声明一个成员变量来持有生成的绑定类实例。

(2)在 onCreate 方法中进行绑定初始化:

(3)设置布局管理器,在这里可以设置布局

(4)添加按钮的点击监听事件:一旦布局文件中的按钮被加载,可以直接通过 binding 对象引用该按钮,并为其添加点击监听事件

2.9 在RecyclerView的Adapter中,我们可以在ViewHolder内置类中传入item布局的binding。

由于是动态创建,所以pojo类对应着数据;而viewholder对应着布局中的组件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/456633.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CORS预检请求配置流程图 srpingboot和uniapp

首先要会判断预检请求 还是简单请求 简单请求 预检请求 #mermaid-svg-1R9nYRa7P9Pll4AK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1R9nYRa7P9Pll4AK .error-icon{fill:#552222;}#mermaid-svg-1R9nYRa7P9Pll4…

智能园艺:Spring Boot植物健康系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理植物健康系统的相关信息成为必然。开发合适…

51单片机——OLED显示图片

取模软件&#xff1a;链接:https://pan.baidu.com/s/1UcrbS7nU4bsawNxsaaULfQ 提取码:gclc 1、如果图片大小和格式不合适&#xff0c;可以先用Img2Lcd软件进行调整图片大小&#xff0c;一般取模软件使用的是.bmp图片&#xff0c;可以进行输出.bmp格式。软件界面如下&#xff1…

开源vGPU方案 HAMi实现细粒度GPU切分——筑梦之路

前言 为什么需要 GPU 共享、切分等方案&#xff1f; 在使用GPU的过程中我们会发现&#xff0c;直接在裸机环境使用&#xff0c;都可以多个进程共享 GPU&#xff0c;怎么到 k8s 环境就不行了&#xff1f; 1. 资源感知 在 k8s 中资源是和节点绑定的&#xff0c;对于 GPU 资源…

打包方式-jar和war的区别

1、jar包 JAR包是类的归档文件&#xff0c;与平台无关的文件格式&#xff0c;其实jar包就是java的类进行编译生成的class文件进行打包的压缩包。 JAR以ZIP文件格式为基础&#xff0c;与ZIP不同的是&#xff0c;JAR不仅用于压缩和发布&#xff0c;还用于部署和封装库、组件和插…

R实验——logistic回归、LDA、QDAKNN

数据集介绍&#xff1a; mpg&#xff0c;miles per gallon即油耗&#xff0c;这个数据集来自卡内基梅隆大学维护的StatLib库。1983年美国统计协会博览会使用了该数据集。这个数据集是对StatLib库中提供的数据集稍加修改的版本。根据Ross Quinlan(1993)在预测属性“mpg”中的使…

利用飞腾派进行OpenCV开发

实验目标&#xff1a; 完成飞腾平台OpenCV开发。 实验大纲&#xff1a; Mat数据结构加载、显示、保存图像读写像素RGB图像分离彩色图转灰度图 Mat数据结构 Mat是一个类&#xff0c;由两个数据部分组成&#xff1a;矩阵头(大小,通道,数据类型等)和数据块(像素 值)。创建示例…

vue3 选中对话框时,对话框右侧出一个箭头

先看下做出的效果&#xff1a; html代码&#xff0c;其中listPlan.records是后台拿到的数据进行遍历 <template><ul class"list"><li style"height: 180px;width: 95%":key"index"v-for"(item, index) in listPlan.record…

Android 判断手机放置的方向

#1024程序员节&#xff5c;征文# 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 需求 老板&#xff1a;我有个手持终端&#xff0c;不能让他倒了&#xff0c;当他倒或者倾斜的时候要发出报警&#xff1b; 程序猿&#xff1a;我这..... 老板…

Servlet(三)-------Cookie和session

一.Cookie和Session Cookie和Session都是用于在Web应用中跟踪用户状态的技术。Cookie是存储在用户浏览器中的小文本文件&#xff0c;由服务器发送给浏览器。当用户再次访问同一网站时&#xff0c;浏览器会把Cookie信息发送回服务器。例如&#xff0c;网站可以利用Cookie记住用…

Python与MySQL

一、Python 操作 MySQL 数据库软件 我们在上一篇文章《SQL入门》中使用了图形化工具DBeaver操作MySQL数据库软件&#xff0c;除了使用图形化工具以外&#xff0c;我们也可以使用编程语言来执行 SQL 从而操作数据库&#xff0c;可以在 Python 中&#xff0c;使用第三方库 pymys…

设计师的新宠:7款不容错过的界面设计软件

在UI设计领域&#xff0c;设计师们常常需要借助各种工具来实现他们的创意。市场上众多的设计软件让设计师们有了丰富的选择&#xff0c;但同时也带来了选择困难。一个好的软件界面设计工具不仅能提升工作效率&#xff0c;还能为设计师提供丰富的资源和参考&#xff0c;帮助他们…

Python:背景知识及环境安装

一、计算机的基础概念 1.1 什么是计算机&#xff1f; 最早我们有计算器&#xff0c;但是他只能完成算数运算的功能 而计算机能完成的工作有&#xff1a; &#xff08;1&#xff09;算术运算 &#xff08;2&#xff09;逻辑判断 &#xff08;3&#xff09;数据存储 &#xff08…

使用AutoDL训练YOLO等计算机视觉网络模型(AutoDL+Xftp+VS Code),附详细操作步骤

前言 本文记录利用AutoDL云服务器&#xff0c;使用VS Code远程连接进行模型训练&#xff0c;步骤完整&#xff0c;操作简便&#xff0c;不需要使用任何命令即可快速运行&#x1f680;。 专栏目录&#xff1a;YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Bac…

分享几个办公类常用的AI工具

办公类 WPS AI讯飞智文iSlideProcessOn亿图脑图ChatPPT WPS AI 金山办公推出的协同办公 AI 应用&#xff0c;具有文本生成、多轮对话、润色改写等多种功能&#xff0c;可以辅助用户进行文档编辑、表格处理、演示文稿制作等办公操作。 https://ai.wps.cn/ 讯飞智文 科大讯飞推…

博弈论 C++

前置知识 若一个游戏满足&#xff1a; 由两名玩家交替行动在游戏进行的任意时刻&#xff0c;可以执行的合法行动与轮到哪位玩家无关不能行动的玩家判负 则称该游戏为一个公平组合游戏。 尼姆游戏&#xff08;NIM&#xff09;属于公平组合游戏&#xff0c;但常见的棋类游戏&…

企业数字化转型建设方案(数据中台、业务中台、AI中台)

方案介绍&#xff1a; 企业数字化转型建设方案中的数据中台是企业数字化转型的核心基础设施&#xff0c;负责数据的整合、治理、共享和应用&#xff0c;将数据转化为资产&#xff0c;服务于业务决策和运营。业务中台是连接数据中台和技术中台的桥梁&#xff0c;负责业务的抽象…

Redis Search系列 - 第六讲 基准测试 - Redis Search VS. MongoDB VS. ElasticSearch

目录 一、引言二、Redis Search 2.x版本的性能提升三、Redis Search VS. MongoDB VS. ElasticSearch3.1 测试环境3.2 100%写 - 基准测试3.3 100%读 - 基准测试3.4 混合读/写/搜索 - 基准测试2.5 搜索延迟分析3.6 读延迟分析3.7 写延迟分析3.8 Redis Search VS. ElasticSearch3.…

DSPy:不需要手写prompt啦,You Only Code Once!

论文地址&#xff1a;https://arxiv.org/abs/2310.03714   项目地址&#xff1a;https://github.com/stanfordnlp/dspy 文章目录 1. 背景2. 签名3. 模块3.1 预测模块3.2 其他内置模块 4. 提词器5. 评估目标6. 代码分析6.1 _prepare_student_and_teacher6.2 _prepare_predicto…

985研一,转嵌入式好还是后端开发好?

有个老铁问&#xff0c;985研一&#xff0c;转嵌入式好还是后端开发好&#xff1f; 我认为&#xff0c;这学历&#xff0c;两个随便挑&#xff0c;我说的&#xff0c;从趋势来看&#xff0c;更建议嵌入式&#xff0c;走供应链上游&#xff0c;芯片原厂、新能源车企、军工或者搞…