鸿蒙Next仓颉语言开发实战教程:消息列表
大家好,今天要分享的是仓颉语言开发商城应用实战教程的消息列表页面。

这个页面的导航栏和之前有所不同,不过难度并没有增加,只是标题移到了左边,我们使用两端对齐方式就能实现,导航栏部分的具体代码如下:
Row(8){
Text('消息')
.fontSize(16)
.fontColor(Color.BLACK)
.fontWeight(FontWeight.Bold)
Text('•••')
.fontSize(16)
.fontColor(Color.BLACK)
.fontWeight(FontWeight.Bold)
}
.width(100.percent)
.height(60.vp)
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.SpaceBetween)
.padding(left:12,right:12)
.backgroundColor(Color.WHITE)
紧邻导航栏下方的是消息筛选列表,因为列表里元素的样式相同,所以我们使用Foreach循环加载。实现这种列表首先需要的是数据,有了数据才能进行遍历。而在创建数据之前我们需要创建对应的结构体:
public class TypeItem{
private let title: String;
private let image: CJResource;
public TypeItem(title:String, image:CJResource){
this.title = title
this.image = image
}
public func getTitle():String{
return this.title
}
public func getImage():CJResource{
return this.image
}
}
然后创建上方结构体类型的数组:
@State var topList:ArrayList<TypeItem> = ArrayList<TypeItem>(
TypeItem('客服',@r(app.media.kefu)),
TypeItem('物流',@r(app.media.wuliu)),
TypeItem('提醒',@r(app.media.tixing)),
TypeItem('优惠',@r(app.media.youhui)),
TypeItem('互动',@r(app.media.hudong))
)
有了数组我们就可以遍历了,仓颉中循环渲染的组件我们目前使用的是Foreach,这里再把Foreach跟大家详细介绍一下,Foreach一共有三个参数,第一个是dataSource,也就是数据源,第二个叫itemGeneratorFunc,是生成子组件的地方,第三个参数叫keyGeneratorFunc,是生成子组件ID的地方,第三个参数不太常用。所以我们循环加载消息类型列表的具体代码是这样的:
Scroll{
Row(30){
ForEach(topList, itemGeneratorFunc: {item:TypeItem,index:Int64 =>
Column(5){
Row{
Image(item.getImage())
.width(26)
.height(26)
.objectFit(ImageFit.Contain)
}
.width(50)
.height(50)
.backgroundColor(Color(236,236,236))
.borderRadius(10)
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.Center)
Text(item.getTitle())
.fontColor(0x4a4a4a)
.fontSize(15)
}
.alignItems(HorizontalAlign.Center)
.justifyContent(FlexAlign.Center)
})
}
}
.width(100.percent)
.backgroundColor(Color.WHITE)
.padding(bottom:7)
最后是消息列表,它和上方的类型列表大同小异,结构体多了字段,Scroll组件换成了List,不再赘述,直接贴代码:
List{
ForEach(msgList, itemGeneratorFunc: {item:MessageItem,index:Int64 =>
ListItem{
Row(6){
Image(item.getImage())
.width(50)
.height(50)
.borderRadius(10)
.backgroundColor(Color.RED)
Column(5){
Row{
Text(item.getTitle())
.fontColor(0x4a4a4a)
.fontSize(17)
Text('星期四')
.fontSize(12)
.fontColor(Color.GRAY)
}
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.SpaceBetween)
.width(100.percent)
Text(item.getContent())
.fontColor(0x4a4a4a)
.fontSize(14)
}
.alignItems(HorizontalAlign.Start)
.layoutWeight(1)
}
.width(100.percent)
.height(80)
.alignItems(VerticalAlign.Center)
.justifyContent(FlexAlign.Start)
.padding(left:10,right:10)
}
})
}
.margin(top:12)
.backgroundColor(Color.WHITE)
今天的内容就是这样,感谢阅读。##HarmonyOS语言##仓颉##购物#
鸿蒙Next仓颉语言开发实战教程:消息列表的更多相关文章
- Swift游戏开发实战教程(霸内部信息大学)
Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发2-Model层建立
上篇(asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作)文章讲解了开发过程中的准备工作,主要创建了项目数据库及项目,本文主要讲解项目M层的实现,M层这里 ...
- 微信小程序-云开发实战教程
微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发4- 后台模板html页面创建
上一篇教程<asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发>完成了本项目的登录模块,登录后就需要进入后台管理首页了,需要准备一个后台模 ...
- Python开发实战教程(8)-向网页提交获取数据
来这里找志同道合的小伙伴!↑↑↑ Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知 ...
- React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...
- 微信小程序教学第三章(含视频):小程序中级实战教程:列表-页面逻辑处理
§ 页面逻辑处理 本文配套视频地址: https://v.qq.com/x/page/n0554dndrez.html 开始前请把 ch3-2 分支中的 code/ 目录导入微信开发工具 修改 ind ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发3-登录模块开发
进行本文之前需要在数据库用户表里面增加一条用户数据,直接手动添加即可,未安全考虑密码一定要使用Md5加密后的,这里提供666666的Md5密文为(c831b04de153469d),本文完成登录模块的 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作
/****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...
- php扩展开发实战教程(1)
我的开发环境: Ubuntu16.04 apt方式安装的php5.6, apache,mysql等 由于我的本机用的是apt方式安装的php,所以我这里从头开始用最精简的方式,编译安装一个php5.4 ...
随机推荐
- Effective Java理解笔记系列-第1条-何时考虑用静态工厂方法替代构造器?
为什么写这系列博客? 在阅读<Effective Java>这本书时,我发现有许多地方需要仔细认真地慢慢阅读并且在必要时查阅相关资料才能彻底搞懂,相信有些读者在阅读此书时也有类似感受:同时 ...
- unigui如何直接显示一个PDF文件【13】
这个问题有点搞笑. PDF.js v1.9.426 (build: 2558a58d) 信息:Unexpected server response (204) while retrieving PDF ...
- TJSON的烦人的泄漏
System.Json中的JSON应该说还是好用的,因为相关superObject的json使用,转换过来概念思路上有点混淆搞不清. 正题:老是泄漏.一会儿是TJSONArray,一会儿是TJSONO ...
- 0x03 搜索与图论
搜索与图论 广度优先搜索\(BFS\) 概念 广度优先搜索(Breadth-First Search)是一种图遍历算法,用于在图或树中按层次逐层访问节点.它从源节点(起始节点)开始,首先访问源节点的所 ...
- HashMap 批量添加
需要初始化一个常量HashMap,并希望在一行语句中完成.避免像这样的事情: hashMap.put("One", new Integer(1)); // adding value ...
- 超实用!用FunctionCall实现快递AI助手
昨天晚上直播,我们用 RAG(Retrieval-Augmented Generation,检索增强生成)实现了数据库 AI 助手,今天我们准备换一个技术使用 function call 来实现快递 ...
- kettle实时增量同步mysql数据
** 本文主要介绍运用kettle实时增量同步mysql数据 ** Debezium介绍 官网地址:https://debezium.io/documentation/ Debezium是一个开源项目 ...
- Windows 提权指南
男儿若遂平生志,五经勤向窗前读. 导航 壹 - Se 特权 贰 - RunAs 叁 - 弱服务 肆 - Windows 内核 伍 - 密码搜寻 陆 - 杂项 AlwaysInstallElevated ...
- EFCore Study(番外1)——单向导航属性
一.单向导航属性场景 1.比如公司OA系统有很多相关的审批流程,比如离职(Leave).请假(relex).加班,每个流程都有多级审批人,每个审批人都是User 一个人(User)--多个审批流程的多 ...
- CS及免杀
Strategic Cyber 责任有限公司发行了适用于 Windows.Linux 和 MacOS X 的 Cobalt Strike 软件包. 要安装 Cobalt Strike,只需将其存档解压 ...