鸿蒙自定义刷新组件使用

前言

DevEco Studio版本:4.0.0.600

1、RefreshLibrary_HarmonyOS.har,用于HarmonyOS

        "minAPIVersion": 9,

        "targetAPIVersion": 9,

        "apiReleaseType": "Release",

        "compileSdkVersion": "3.2.3.6",

        "compileSdkType": "HarmonyOS"

2、RefreshLibrary_OpenHarmony.har , 用于OpenHarmony

        "minAPIVersion": 9,

        "targetAPIVersion": 10,

        "apiReleaseType": "Release",

        "compileSdkVersion": "4.0.10.13",

         "compileSdkType": "OpenHarmony"

注:下面示例都是以RefreshLibrary_OpenHarmony.har 为例

使用效果:

  

har包下载:

下载地址:https://download.csdn.net/download/Abner_Crazy/88754702

如何使用

第一步:har包引用

参考文档:

Harmony如何引用har包

List列表使用

通过上面的下载链接下载之后,把har包复制到项目中,在项目src/main目录下新建目录lib,将har包复制进去。

然后在项目的oh-package.json5中添加对har包的引用,添加完成后会报错,只需要将鼠标放在错误处,出现Run 'ohpm install'后执行下就行了。

"dependencies": {"@app/RefreshLibrary": "file:./src/main/libs/RefreshLibrary_OpenHarmony.har"
}

第二步:查看引用是否成功

引用成功后会在项目目录下生成一个oh_modules目录,如果有@app/RefreshLibrary则成功,无则失败。

第三步:代码使用

1、RefreshListView调用(带默认刷新头部和尾部)
RefreshListView({list: this.list,controller: this.controller,refreshLayout: (item, index): void => this.itemLayout(item, index),onItemClick: (item, index) => {console.info("Index------   点击了:index: " + index + " item: " + item)},onRefresh: () => {//下拉刷新},onLoadMore: () => {//上拉加载}
})

参数解释:

属性是否必须描述
list必须数据源,数组类型
controller必须

刷新控件的控制器,控制关闭下拉刷新和上拉加载

finishRefresh():关闭下拉刷新

finishLoadMore():关闭上拉加载

refreshLayout必须子item的视图
onRefresh非必须下拉刷新的回调
onLoadMore非必须上拉加载的回调
onItemClick非必须item的点击事件回调
2、RefreshView调用(刷新头部和尾部需要自定义)
RefreshView({list: this.list,controller: this.controller,headerLayout: () => this.headerLayout(), //下拉刷新布局footLayout: () => this.footLayout(), //上拉加载布局refreshLayout: (item, index): void => this.itemLayout(item, index),onItemClick: (item, index) => {console.info("Index------   点击了:index: " + index + " item: " + item)},onRefresh: () => {//下拉刷新},onLoadMore: () => {//上拉加载}
})

参数解释:

属性是否必须描述
list必须数据源,数组类型
controller必须

刷新控件的控制器,控制关闭下拉刷新和上拉加载

finishRefresh():关闭下拉刷新

finishLoadMore():关闭上拉加载

refreshLayout必须子item的视图
headerLayout必须自定义下拉刷新的视图样式
footLayout必须自定义上拉加载的视图样式
onRefresh非必须下拉刷新的回调
onLoadMore非必须上拉加载的回调
onItemClick非必须item的点击事件回调

第四步:详细示例

import { RefreshController, RefreshView, RefreshListView } from "@app/RefreshLibrary"@Entry
@Component
struct Index {@State list: Array<number> = []@State controller: RefreshController = new RefreshController()aboutToAppear() {this.refreshData()}// 刷新测试数据private refreshData() {this.list = []for (var i = 0; i < 10; i++) {this.list.push(i)}}// 加载更多测试数据private loadMoreData() {let initValue = this.list[this.list.length-1] + 1this.list.push(initValue)}@BuilderitemLayout(item: object, index: number) {Text("我是测试数据: " + index).width("95%").height(50).margin(10).textAlign(TextAlign.Center).border({ width: 1, color: Color.Blue })}@BuilderheaderLayout() {Text("我是自定义头部").width("100%").height(50).margin(10).textAlign(TextAlign.Center)}@BuilderfootLayout() {Text("我是自定义底部").width("100%").height(50).margin(10).textAlign(TextAlign.Center)}build() {Stack() {RefreshView({list: this.list,controller: this.controller,//如果是3.1的DevEcoStudio,this.controller会报错,使用$controller代替headerLayout: () => this.headerLayout(), //下拉刷新布局footLayout: () => this.footLayout(), //上拉加载布局refreshLayout: (item, index): void => this.itemLayout(item, index),onItemClick: (item, index) => {console.info("Index------   点击了:index: " + index + " item: " + item)},onRefresh: () => {//下拉刷新console.info("Index------   onRefresh")//模拟数据加载setTimeout(() => {this.controller.finishRefresh()this.refreshData()}, 2000)},onLoadMore: () => {//上拉加载console.info("Index------   onLoadMore")//模拟数据加载setTimeout(() => {this.controller.finishLoadMore()this.loadMoreData()}, 2000)}})// RefreshListView({//    list: this.list,//    controller: this.controller,//    // headerLayout: () => this.headerLayout(), //下拉刷新布局//    // footLayout: () => this.footLayout(), //上拉加载布局//    refreshLayout: (item, index): void => this.itemLayout(item, index),//    onItemClick: (item, index) => {//       console.info("Index------   点击了:index: " + index + " item: " + item)//    },//    onRefresh: () => {//       //下拉刷新//       console.info("Index------   onRefresh")//       //模拟数据加载//       setTimeout(() => {//          this.controller.finishRefresh()//          this.refreshData()//       }, 2000)//    },//    onLoadMore: () => {//       //上拉加载//       console.info("Index------   onLoadMore")//       //模拟数据加载//       setTimeout(() => {//          this.controller.finishLoadMore()//          this.loadMoreData()//       }, 2000)//    }// })}.width('100%').height('100%')}
}

第五步:使用自定义headerLayout和footLayout效果

  

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

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

相关文章

高清短视频素材网站有哪些?分享十个做短视频必备的素材下载网站!

对于专注于短视频制作和剪辑的朋友来说&#xff0c;找到高质量的视频素材至关重要。你可能会想&#xff1a;“高清短视频素材网站有哪些&#xff1f;”别担心&#xff0c;今天我要为大家推荐十个提供优质素材的网站&#xff0c;帮你轻松搞定短视频制作&#xff01; 怪木素材网…

GEE错误——Image (Error) Image.select: Pattern ‘SR_B1‘ did not match any bands.

错误 我花了大量时间试图解决这个问题,但我找不到解决办法。开发人员和小组成员,我需要你们的帮助,这是我学习项目的一部分。 原始代码链接: https://code.earthengine.google.com/ccd8eb582aa520b970f4dee2d5118def Image (Error) Image.select: Pattern SR_B1 did …

AI 迎来“App Store”时代,AIGC 应用商业化大潮将至

2023 年被称为 AI 元年&#xff0c;一年多以来&#xff0c;AI 一直以前所未有的速度持续进化。 早在 11 月的开发者大会上&#xff0c;OpenAI 推出 GPTs 之时就宣布会开放 GPTs 商城。时隔两个月&#xff0c;商城正式推出&#xff0c;让开发者可以售卖自己定制的 GPT 机器人。…

关于 open ai,你了解多少?

OpenAI 的历史 第一阶段&#xff1a;2015-2018 年 2015 年&#xff0c;埃隆马斯克、山姆阿尔特曼、彼得蒂尔和杰西卡利文斯顿联合创立了 OpenAI。OpenAI 的目标是开发安全、有益的 AGI&#xff0c;并确保其造福全人类。在这一阶段&#xff0c;OpenAI 主要专注于基础研究&…

自养号测评补单提升亚马逊,速卖通,temu 店铺评分销量与转化

要知道买家在购买一个宝贝的时候&#xff0c;宝贝的销量和评论取着决定性的作用。而一个新宝贝在最开始是没有任何销量和评论的&#xff0c;如果在这个时候做关键词广告&#xff0c;虽说可以把这个宝贝的展现排到前面去&#xff0c;可是在与同行有销量有评论的宝贝相竞争时&…

牛客周赛 Round 20 解题报告 | 珂学家 | 状压DP/矩阵幂优化 + 前缀和的前缀和

前言 整体评价 这场比赛很特别&#xff0c;是牛客周赛的第20场&#xff0c;后两题难度直线飙升了。 前四题相对简单&#xff0c;E题是道状压题&#xff0c;历来状压题都难&#xff0c;F题压轴难题了&#xff0c;感觉学到了不少。 A. 赝品 先求的最大值 然后统计非最大值的个…

项目工程下载与XML配置文件下载:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十)

XPCIE1032H功能简介 XPCIE1032H是一款基于PCI Express的EtherCAT总线运动控制卡&#xff0c;可选6-64轴运动控制&#xff0c;支持多路高速数字输入输出&#xff0c;可轻松实现多轴同步控制和高速数据传输。 XPCIE1032H集成了强大的运动控制功能&#xff0c;结合MotionRT7运动…

阿里云 SAE 2.0 正式商用:极简易用、百毫秒弹性效率,降本 40%

作者&#xff1a;黛忻 本文主要介绍阿里云 Serverless 应用引擎&#xff08;以下简称 SAE &#xff09;如何帮助企业跨越技术鸿沟&#xff0c;从传统应用架构无感升级到 Serverless 架构&#xff0c;以更高效、更经济的方式进行转型&#xff0c;快速进入云原生快车道&#xff0…

基于springboot+vue的网上超市系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

控制项目进展

优质博文 IT-BLOG-CN 假如一个项目准备工作做的非常周详&#xff0c;现在要做的就是监督项目的进展情况&#xff0c;理想状况下事情应当进展的很顺利&#xff0c;但实际上我们会发现项目永远不会完全按照经计划执行&#xff0c;我们必须进行项目控制。也就是我们需要不断进行调…

2.1.2 关系模式

1. 什么是关系模式 2. 定义关系模式 3. 关系模式与关系 1&#xff0e;什么是关系模式 关系模式是型&#xff0c;关系是值 。 关系模式是对关系的描述&#xff1a; 描述关系元组集合的结构 &#xff0c; 属性构成 l&#xff0c;属性来自的域 l&#…

Kafka——管理Kafka(命令行工具)详解

文章目录 [toc] 管理 Kafka1、主题操作&#xff08;kafka-topic.sh&#xff09;1.1、创建主题 (–create)1.2、增加分区 (–alter)1.3、减少分区数量 (无)1.4、删除主题 (–delete)1.5、列出集群里的所有主题 (–list)1.6、列出主题详细信息 (–describe)1.7、修改或删除配置 (…