【Harmony3.1/4.0】笔记二-列表

概述

列表是一种复杂的容器,当列表项达到一定数量,内容超过屏幕大小时,可以自动提供滚动功能。它适合用于呈现同类数据类型或数据类型集,例如图片和文本。在列表中显示数据集合是许多应用程序中的常见要求(如通讯录、音乐列表、购物清单等)。

使用列表可以轻松高效地显示结构化、可滚动的信息。通过在List组件中按垂直或者水平方向线性排列子组件ListItemGroup或ListItem,为列表中的行或列提供单个视图,或使用ForEach迭代一组行或列,或混合任意数量的单个视图和ForEach结构,构建一个列表。List组件支持使用条件渲染、循环渲染、懒加载等渲染控制方式生成子组件。

列表的综合学习

代码如下


import util from '@ohos.util'
//创建实体类联系人
class Contact{key:string=util.generateRandomUUID(true); //随机生成UUIDname:string;icon:Resource;icon1:Resource=$r("app.media.img21");//定义构造方法constructor(name:string,icon:Resource) {this.name=name;this.icon=icon;}
}@Entry
@Component
struct Two{private  icons:Resource[]=[$r("app.media.img1"),$r("app.media.img2"),$r("app.media.img3"),$r("app.media.img4"),$r("app.media.img5"),$r("app.media.img6"),$r("app.media.img7"),$r("app.media.img8"),$r("app.media.img9"),$r("app.media.img10"),$r("app.media.img11"),$r("app.media.img12"),$r("app.media.img13"),$r("app.media.img14"),$r("app.media.img15"),$r("app.media.img16"),$r("app.media.img17"),$r("app.media.img18"),$r("app.media.img19"),$r("app.media.img20")]private names:string[]=["马云","任正非","李彦宏","张磊","刘强东","奶茶妹","马化腾","鸿祎","余大炮","马斯克","奥巴马","李斌","雷军","成龙","刘德华","巴菲特","张磊","汪涵","大张伟","李连杰"]@State contacts:Contact[]=[new Contact(this.names[0],this.icons[0]),new Contact(this.names[1],this.icons[1]),new Contact(this.names[2],this.icons[2]),new Contact(this.names[3],this.icons[3]),new Contact(this.names[4],this.icons[4]),new Contact(this.names[5],this.icons[5]),new Contact(this.names[6],this.icons[6]),new Contact(this.names[7],this.icons[7]),new Contact(this.names[8],this.icons[8]),new Contact(this.names[9],this.icons[9]),new Contact(this.names[10],this.icons[10]),new Contact(this.names[11],this.icons[11]),new Contact(this.names[12],this.icons[12]),new Contact(this.names[13],this.icons[13]),new Contact(this.names[14],this.icons[14]),new Contact(this.names[15],this.icons[15]),new Contact(this.names[16],this.icons[16]),new Contact(this.names[17],this.icons[17]),new Contact(this.names[18],this.icons[18]),new Contact(this.names[19],this.icons[19]),];//通过封装实体类的方式,生成创建列表build(){Column(){Text("联系人列表").width("100%").height(60).backgroundColor("#800f").fontSize(25).fontColor(Color.White).fontWeight(FontWeight.Bold).textAlign(TextAlign.Center)//列表设置宽度100%,高度根据内容自适应List({space:10}){ForEach(this.contacts,(item:Contact,index)=>{ListItem(){Row(){Image(item.icon).width(40).height(40).margin(10)Text(item.name).fontSize(20).margin({left:20}).layoutWeight(1)Image(item.icon1).width(40).height(40).margin(10).backgroundColor("#6aaa").borderRadius(20)}.width("100%")}},item=>item.key)}.width("100%").divider({strokeWidth:1,color:"#aaa",startMargin:10,endMargin:10}).scrollBar(BarState.Auto)}.width("100%")}
}

二级列表的综合学习

选择联系人,实现左滑显示删除效果

联系人分组联动效果

一键回归顶部效果

代码如下

//二级列表的实现
import util from '@ohos.util'
//创建实体类联系人
class Contact{key:string=util.generateRandomUUID(true); //随机生成UUIDname:string;icon:Resource;icon1:Resource=$r("app.media.img21");//定义构造方法constructor(name:string,icon:Resource) {this.name=name;this.icon=icon;}
}@Entry
@Component
struct Three{private  icons:Resource[]=[$r("app.media.img1"),$r("app.media.img2"),$r("app.media.img3"),$r("app.media.img4"),$r("app.media.img5"),$r("app.media.img6"),$r("app.media.img7"),$r("app.media.img8"),$r("app.media.img9"),$r("app.media.img10"),$r("app.media.img11"),$r("app.media.img12"),$r("app.media.img13"),$r("app.media.img14"),$r("app.media.img15"),$r("app.media.img16"),$r("app.media.img17"),$r("app.media.img18"),$r("app.media.img19"),$r("app.media.img20")]private names:string[]=["马云","任正非","李彦宏","张磊","刘强东","奶茶妹","马化腾","鸿祎","余大炮","马斯克","奥巴马","李斌","雷军","成龙","刘德华","巴菲特","张磊","汪涵","大张伟","李连杰"]private groups:object[]=[{ title:"A",contacts:[new Contact(this.names[0],this.icons[0]),new Contact(this.names[1],this.icons[1]),new Contact(this.names[2],this.icons[2]),new Contact(this.names[3],this.icons[3]),new Contact(this.names[4],this.icons[4]),new Contact(this.names[5],this.icons[5])]},{ title:"B",contacts:[new Contact(this.names[6],this.icons[6]),new Contact(this.names[7],this.icons[7]),new Contact(this.names[8],this.icons[8]),new Contact(this.names[9],this.icons[9])]},{ title:"C",contacts:[new Contact(this.names[10],this.icons[10]),new Contact(this.names[11],this.icons[11]),new Contact(this.names[12],this.icons[12]),new Contact(this.names[13],this.icons[13]),new Contact(this.names[14],this.icons[14]),new Contact(this.names[15],this.icons[15]),new Contact(this.names[16],this.icons[16])]},{ title:"D",contacts:[new Contact(this.names[17],this.icons[17]),new Contact(this.names[18],this.icons[18]),new Contact(this.names[19],this.icons[19])]},]//使用层布局添加滚动定位按钮private listScroller: Scroller = new Scroller();@Builder itemEnd(index: number) {// 侧滑后尾端出现的组件Button({ type: ButtonType.Circle }) {Image($r('app.media.del')).width(25).height(25)}.width(40).height(40).backgroundColor("#8aaa").onClick(() => {this.groups.splice(index, 1);})}@Builder itemHead(text: string) {// 列表分组的头部组件,对应联系人分组A、B等位置的组件Text(text).fontSize(20).backgroundColor('#fff1f3f5').width('100%').padding(5)}build(){Stack({alignContent:Alignment.BottomEnd}){Column(){Text("联系人列表").width("100%").height(60).backgroundColor("#800f").fontSize(25).fontColor(Color.White).fontWeight(FontWeight.Bold).textAlign(TextAlign.Center)//列表设置宽度100%,高度根据内容自适应List({space:10,scroller:this.listScroller}){ForEach(this.groups,item=>{ListItemGroup({header:this.itemHead(item.title)}){ForEach(item.contacts,(contact,index)=>{ListItem(){Row(){Badge({count: Math.round(Math.random()*10),position: BadgePosition.RightTop,style: { badgeSize: 16, badgeColor: '#FA2A2D' }}){Image(contact.icon).width(40).height(40)}.margin({left:10})Text(contact.name).fontSize(20).margin({left:20}).layoutWeight(1)Image(contact.icon1).width(40).height(40).margin(10).backgroundColor("#6aaa").borderRadius(20)}.width("100%")}.swipeAction({ end: this.itemEnd(index) }) // 设置侧滑属性})}})}.width("100%").sticky(StickyStyle.Header)// 设置吸顶,实现粘性标题效果}.width("100%")//创建按钮,回到顶部Button(){Image($r("app.media.top")).width(40).height(40)}.width(70).height(70).zIndex(1).margin({bottom:30,right:30}).backgroundColor("#6aaa").onClick(()=>{// 点击按钮时,指定跳转位置,返回列表顶部this.listScroller.scrollToIndex(0)})}.width("100%").height("100%")}
}

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

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

相关文章

抗D盾是什么,为什么游戏被攻击了需要抗D盾

游戏行业DDoS攻击的主要原因是因为游戏产品生命周期偏短,而DDoS供给成本又不高,只要发起攻击,企业为确保游戏稳定运营而不得不快速做出让步,致使敲诈勒索的成功率相对更高。在遭受DDoS攻击后,游戏公司的日损失甚至多达…

git远程分支强制覆盖本地分支

目录 第一章、问题1.1)报错提示:没有为分支主机或分支配置被跟踪的分支1.2)报错分析与解决 第二章、2.1)本地误删代码后想要git pull拉取覆盖:失败2.2)报错分析和解决 友情提醒: 先看文章目录,…

4.24总结

对部分代码进行了修改,将一些代码封装成方法,实现了头像功能,通过FileInputStream将本地的图片写入,再通过FileOutputStream拷贝到服务端的文件夹中,并将服务端的文件路径存入数据库中

Java——接口

目录 一.接口的概念 二.语法规则 三.接口使用 四.接口特性 1.接口类型是一种引用类型,但是不能直接new接口的对象 2.接口中每一个方法都是public的抽象方法, 即接口中的方法会被隐式的指定为 public abstract(只能是 public abstract&#xff0c…

君正X2100 RTOS 固件升级

使用cloner工具烧写固件需要在上电之前让boot_sel[2:0]处于boot from USB模式,但是电路板装在机壳内部后不方便改变boot_sel[2:0]的状态,如果要升级固件,需要通过机壳留出的USB口、网口、或者无线网络进行固件更新。 一、升级方案 1、固件分…

Hadoop——Yarn基础架构

Hadoop——Yarn基础架构 Hadoop YARN(Yet Another Resource Negotiator)是Apache Hadoop生态系统中的一个子项目,它是用于集群资源管理的框架,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台&…

Postman 工具发送请求的技巧与实践

在开发和测试 API 时,发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先,在 Postman 启动界面上找到并点击 “New” 按钮,选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…

指针学习总结

当指针本身定义的类型不同十,指向的一次性取值长度也不同 数组元素的指针 数组存放字符串 数组存放字符串时存放在栈区,sizeof(str1) 128字节 字符指针指向字符串 str2此时存放的是h的地址,因此sizeof(str2) 4字节或者8字节 并且文字常量…

递归算法/斐波那契数列

目录 递归 直接递归 间接递归 思想沿用 斐波那契数列 图片来源网络,侵权联系可删 递归 递归(Recursion)是一种编程技术,其中函数或方法直接或间接地调用自身。递归通常用于解决可以分解为更小、更简单的子问题的问题。递归的…

一文速览Llama 3及其微调:如何通过paper-review数据集微调Llama3 8B

前言 4.19日凌晨正准备睡觉时,突然审稿项目组的文弱同学说:Meta发布Llama 3系列大语言模型了 一查,还真是 本文以大模型开发者的视角,基于Meta官方博客的介绍:Introducing Meta Llama 3: The most capable openly a…

linux 系统文件目录颜色及特殊权限对应的颜色

什么决定文件目录的颜色和背景? 颜色 说明 栗子 权限白色表示普通文件 蓝色表示目录 绿色表示可执行文件 浅蓝色链接文件 黄色表示设备文件 红色 表示压缩文件 红色闪烁表示链接的文件有问题 灰色 表示其它文件 可以用字符表示文件的类型&am…

Netty快速入门

网络通信模型 在了解Netty之前,我们可以简单的先了解一下我们的网络通信方式,正所谓知其然,知其所以然。只有了解了网络通信模型,我们才能更好的去理解Netty的一些核心的原理。 如下图是一个简单的请求发送的时候的一个大概的HTT…

【Linux】GDB调试器学起来!指令全解,建议收藏

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

面试十五 容器

一、vector容器 template<typename T> class Allocator{ public:T* allocator(size_t size){// 负责内存开辟return (T*)malloc(sizeof(T) * size);}void deallocate(void * p){free(p);}void construct(T*p,const T&val){// 定位newnew (p) T(val);}void destroy(…

访问控制列表配置实验

ACL&#xff0c;全称 Access Control List&#xff08;访问控制列表&#xff09;&#xff0c;是一种实现访问控制的机制&#xff0c;用于规定哪些主体&#xff08;如用户、设备、IP地址、进程等&#xff09;可以对哪些资源&#xff08;如网络服务、文件、系统对象等&#xff09…

2024深圳杯C题的8页思路分析+所有代码可执行+参考文献+持续更新参考论文(已经更新了代码与图像)

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…

docker入门学习

一、docker概念 Docker 引擎是使用的是Linux内核特性的容器引擎。 二、docker的安装 1.docker&#xff0c;下载地址&#xff1a; 桌面版&#xff1a;Docker Desktop: The #1 Containerization Tool for Developers | Docker 服务器版&#xff1a;Install Docker Engine | D…

# 从浅入深 学习 SpringCloud 微服务架构(六)Feign(3)

从浅入深 学习 SpringCloud 微服务架构&#xff08;六&#xff09;Feign&#xff08;3&#xff09; 一、组件的使用方式总结 1、注册中心 1&#xff09; Eureka 搭建注册中心 引入依赖 spring-cloud-starter-netflix-eureka-server。 配置 EurekaServer。 通过 EnableEure…

前端路由的实现原理

当谈到前端路由时&#xff0c;指的是在前端应用中管理页面导航和URL的机制。前端路由使得单页应用&#xff08;Single-Page Application&#xff0c;SPA&#xff09;能够在用户与应用交互时动态地加载不同的视图&#xff0c;而无需每次都重新加载整个页面。 在前端开发中&…

如何在阿里云快速配置自动定时重启ECS云服务器?

背景 无论是电子商务、在线教育、游戏&#xff0c;还是流媒体等业务&#xff0c;服务器的稳定运行都是至关重要的。然而&#xff0c;在实际运行中&#xff0c;我们可能会遇到这样一些场景&#xff1a; 系统更新&#xff1a;一些操作系统或者软件的更新可能需要重启服务器才能…