鸿蒙5.0【OpenHarmony】下拉刷新、上拉加载更多的 LazyRefresh

自定义组件 LazyRefresh

HarmonyOS 中 是一个易用,刷新组件,支持下拉刷新和上拉加载更多,header和footer。支持各种组件,List、Grid,WaterFlow

  • 下拉刷新我们可以使用Refresh

  • 上拉更多,有两种方案,推荐使用第二种,可以更快的现实UI,加载时机更快

    • 使用 onReachEnd() 监听到滑动到底部
    • 使用 onScrollIndex 监听滑动到倒数第二个,或者 第三个的时候,开始加载更多
    • 使用 Item 的 onAppear监听当前index是 倒数第二个,或者 第三个的时候,开始加载更多

上图

1

支持功能

  • 支持List、Grid、WaterFlow的下拉刷新和上拉加载更多
  • 支持List、Grid 添加header,footer,WaterFlow 仅支持 Footer
  • 增删改查 简单封装
  • 支持改变,当滑动到倒数第N个元素,开始加载更多
  • 支持第一次进来是否开始触发loadMore

开始使用

ohpm install @nzy/lazy-refresh

使用说明

引入

import { LazyRefreshList, LazyRefreshController } from '@nzy/lazy-refresh';

使用

 // 控制的controller
 @Require controller: LazyRefreshController<Object> = new LazyRefreshController()
 xxx
 LazyRefreshList({
        // // 控制加载以及设置数据的controller
        controller: this.controller,
        // // 每个Item的布局
        listItem: this.listItem,
        // header
        header: this.header,
        // footer
        footer: this.footer,
        // List的space 间距
        space: 10,
        // LazyForEach 的 keyGenerator key生成器
        keyGenerator: (item: Object, index: number) => {
          return this.controller.getData(index).id.toString()
        },
        // Grid的缓存个数cachedCount
        cachedCount: 5,
        // 触发LoadMore时机,默认是1
        loadMoreLastIndex: 1,
        // 是否第一次进来就触发加载更多
        isAppearLoadMore: true,
        // 加载更多的回调
        onLoadMore: () => {
          return new Promise<string>((resolve, reject) => {
            // 模拟网络请求操作
            setTimeout(() => {
              resolve('加载更多成功');
              let arr2 =
                [new MyData(),
                  new MyData(),
                  new MyData(),
                  new MyData(),
                  new MyData()]
              this.controller.addAllData(arr2)
              if (this.index > 0) {
                this.controller.loadMoreEnd()
                Logger.info(`执行-- controller.loadMoreEnd() ${this.index}`)
              } else {
                this.index++
                this.controller.loadMoreComplete()
                Logger.info(`执行-- controller.loadMoreComplete() ${this.index}`)
              }
            }, 1000);
          });
        },
        // 刷新的回调
        onRefresh: () => {
          return new Promise<string>((resolve, reject) => {
            // 模拟网络请求操作
            setTimeout(() => {
              resolve('刷新成功');
              promptAction.showToast({ message: '刷新成功' })
              this.controller.setNewData(this.getData())
              this.controller.refreshFinish()
            }, 1000);
          });
        },
      })
        .height('100%')
        .layoutWeight(1)
        .margin({ top: 10 })

具体属性

  • controller 更新数据,以及设置加载和刷新的状态 必传
  • listItem 每个Item的builder 必传
  • header 头部的builder,不传默认没有
  • footer 尾部的builder,不传默认没有
  • keyGenerator LazyForEach 的 keyGenerator key生成器, 默认是 JSON.stringify(item)
  • cachedCount List,Grid,WaterFlow 的缓存个数cachedCount, 默认是 1
  • loadMoreLastIndex 当滑动到倒数第N个是触发LoadMore,默认是1
  • isAppearLoadMore 一进来是否就触发LoadMore ,默认是false
  • onRefresh 刷新的回调 ,不传代表禁用刷新
  • onLoadMore 加载更多的回调 ,不传代表禁用加载更多
List 独有
  • space (List)每一行的间距
Grid和WaterFlow特有
  • rowsGap: 10,
  • columnsGap: 10,
  • columnsTemplate: “1fr 1fr”,

LazyRefreshController

  • loadMoreComplete() 加载完成(注意不是加载结束,而是本次数据加载结束并且还有下页数据)
  • loadMoreFail() 加载更多失败
  • loadMoreEnd() 加载结束,不会再继续加载了,没有更多了
  • refreshFinish() 刷新完成
  • totalCount() 获取列表总个数
  • getData(index: number): T 返回当前的item
  • addData(data: T, index?: number) 根据index添加数据,默认在添加到最后
  • addAllData(data: Array) 添加一个数组
  • setNewData(data: Array) 设置一个全新的数据
  • deleteData(index: number): boolean 删除元素
  • moveData(from: number, to: number): boolean 移动数据
  • notifyItemChange(index: number, data: T): boolean 改变index位置的数据
  • notifyDataReload() 重新加载
  • notifyDatasetChange 变更数据


最后呢,很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

​​​​1

高清完整版请点击《鸿蒙NEXT星河版开发学习文档》

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细资料鸿蒙(OpenHarmony )学习手册(共计1236页)与鸿蒙(OpenHarmony )开发入门教学视频,帮助大家在技术的道路上更进一步。

《鸿蒙 (OpenHarmony)开发学习视频》

《鸿蒙生态应用开发V2.0白皮书》

《鸿蒙 (OpenHarmony)开发基础到实战手册》

《鸿蒙开发基础》

《鸿蒙开发进阶》

《鸿蒙开发实战》
在这里插入图片描述

获取这份鸿蒙星河版学习资料,请点击→《鸿蒙NEXT星河版开发学习文档》

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值