当前位置: 首页 > news >正文

鸿蒙:简单实现列表下拉刷新+上拉加载

《目录》

1. 前言

2. 参考文档

3. 核心代码

4. 运行效果

5. 完整代码


1. 前言

下拉刷新和上拉加载,是List()组件中比较常用功能。鸿蒙开发中,实现这一功能是比较简单的,结合Refresh、onReachEnd等组件或方法即可实现。

2. 参考文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-list#onreachend

https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-container-refresh

3. 核心代码

Refresh({ refreshing: $$this.isRefreshing }) {List({ space: 20 }) {ForEach(this.arr.arr, (item: string) => {ListItem() {Text(item).width('90%').height(80).fontSize(16).margin(10).textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF).padding({ left: 10, right: 10 }).maxLines(2).textOverflow({ overflow: TextOverflow.Ellipsis })}.shadow({ radius: 40, color: "rgba(0, 0, 0, 0.5)" }).borderRadius(10)}, (item: string) => item)}.onScrollIndex((first: number) => {console.info(first.toString());}).onReachEnd(() => {if (!this.isEnd) {this.isEnd = truefor (let index = 0; index < 5; index++) {this.num++this.arr.arr.push("Hello" + this.num)}this.isEnd = false}}).width('100%').height("95%").alignListItem(ListItemAlign.Center).scrollBar(BarState.Off)
}.onRefreshing(() => {setTimeout(() => {const arr = new Arr().arrthis.arr.arr = arrthis.isRefreshing = false;this.getUIContext().getPromptAction().showToast({ message: "刷新成功" })}, 2000)

4. 运行效果

5. 完整代码

@ObservedV2
class Arr {@Tracearr: String[] = ["我对钱没有兴趣,真的,我从来没碰过钱💰","我最快乐的时候,是一个月拿91块钱当老师的时候😌","年轻人,晚上想想千条路,早上起来走原路🤷‍♂️","创业要找最适合的人,不要找最好的人👥","当你成功的时候,你说的所有话都是真理💬","如果我能成功,80%的人都能成功💪","我高考数学考了1分,这说明我不适合学数学📚","我从来没当过首富,我只是个普通人🙋‍♂️","今天很残酷,明天更残酷,后天很美好,但绝对大部分人死在明天晚上🌙","男人的长相往往和他的才华成反比😜","我退休不是因为我赚够了钱,而是因为我想做更多喜欢的事🎉"];
}@Entry
@ComponentV2
struct Index {@Local isRefreshing: boolean = false;arr = new Arr()@Local num: number = 0;@Local isEnd: boolean = false;build() {Column() {Text("下拉刷新 + 上拉加载").fontSize(30).fontWeight(FontWeight.Bold).width('100%').textAlign(TextAlign.Center)Refresh({ refreshing: $$this.isRefreshing }) {List({ space: 20 }) {ForEach(this.arr.arr, (item: string) => {ListItem() {Text(item).width('90%').height(80).fontSize(16).margin(10).textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF).padding({ left: 10, right: 10 }).maxLines(2).textOverflow({ overflow: TextOverflow.Ellipsis })}.shadow({ radius: 40, color: "rgba(0, 0, 0, 0.5)" }).borderRadius(10)}, (item: string) => item)}.onScrollIndex((first: number) => {console.info(first.toString());}).onReachEnd(() => {if (!this.isEnd) {this.isEnd = truefor (let index = 0; index < 5; index++) {this.num++this.arr.arr.push("Hello" + this.num)}this.isEnd = false}}).width('100%').height("95%").alignListItem(ListItemAlign.Center).scrollBar(BarState.Off)}.onRefreshing(() => {setTimeout(() => {const arr = new Arr().arrthis.arr.arr = arrthis.isRefreshing = false;this.getUIContext().getPromptAction().showToast({ message: "刷新成功" })}, 2000)}).refreshOffset(64).pullToRefresh(true)}}
}

觉得有用,可以点赞或收藏

http://www.dtcms.com/a/520477.html

相关文章:

  • [nanoGPT] ChatGPT 的 LLM 的全栈实现 | 快速上手
  • 公司公司手机网站制作互联网营销的特点
  • 做网站苏州营销型网站有什么特点
  • 【计算机网络】408计算机网络高分指南:物理层编码与调制技术精讲
  • 怎样做一个企业的网站建站个人网站备案 网站名称
  • AR巡检系统:打开工业智能运维的下一幕
  • wang域名注册网站厚瑜网站建设
  • 网站建设夬金手指花总南昌做网站哪家好
  • 洪梅网站建设微信 host 微网站模版
  • 网站建设要用到的技术有哪些行业网站建设报价
  • 建网站所需材料生物信息网站建设
  • 【EE初阶】JVM
  • 深度学习------YOLOv5《第一篇》
  • 手机网站无法访问的解决方法文字图片制作网站
  • 叙述一个网站开发流程住房建设和城乡管理局官网
  • HarmonyOS 分布式与 AI 集成:构建智能协同应用的进阶实践
  • Trae x 图片素描MCP一键将普通图片转换为多风格素描效果
  • 游艇网站建设方案网页给别人做的 网站后续收费
  • UE5 外轮廓线,边缘,边界
  • Jackson 序列化的隐性成本
  • ProcDump 学习笔记(6.5):指定转储文件路径与命名策略
  • STM32项目分享:智能植物灌溉系统
  • 高级软考-系统架构设计师知识点1
  • 东城企业网站建设潍坊网站优化培训
  • 信阳网站建设哪个好河北邢台重大新闻
  • 《Python 自动化上传豆瓣电影到飞书:十个真实踩坑记录与避坑指南》
  • ubuntu24.4下载mysql报错解决、下载maraiDB
  • 建设银行网站修改预留手机号企业展厅设计公司100%正品保障
  • 数据结构 08 线性结构
  • 【Linux网络】Socket编程UDP