首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenHarmony环境下可用的下拉刷新、上拉加载组件【PullToRefresh】

OpenHarmony环境下可用的下拉刷新、上拉加载组件【PullToRefresh】

原创
作者头像
小帅聊鸿蒙
发布于 2024-09-18 12:32:29
发布于 2024-09-18 12:32:29
3160
举报
文章被收录于专栏:鸿蒙开发笔记鸿蒙开发笔记

简介

PullToRefresh是一款OpenHarmony环境下可用的下拉刷新、上拉加载组件。 支持设置内置动画的各种属性,支持设置自定义动画,支持lazyForEarch的数据作为数据源。

效果展示:

内置动画效果

下载安装

代码语言:shell
AI代码解释
复制
ohpm install @ohos/pulltorefresh

使用说明

快速使用

代码语言:typescript
AI代码解释
复制
import { PullToRefresh } from '@ohos/pulltorefresh'

// 需绑定列表或宫格组件
private scroller: Scroller = new Scroller();
  
PullToRefresh({
// 必传项,列表组件所绑定的数据
data: $data,
// 必传项,需绑定传入主体布局内的列表或宫格组件
scroller: this.scroller,
// 必传项,自定义主体布局,内部有列表或宫格组件
customList: () => {
  // 一个用@Builder修饰过的UI方法
  this.getListView();
},
// 可选项,下拉刷新回调
onRefresh: () => {
  return new Promise<string>((resolve, reject) => {
    // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
    setTimeout(() => {
      resolve('刷新成功');
      this.data = this.dataNumbers;
    }, 2000);
  });
},
// 可选项,上拉加载更多回调
onLoadMore: () => {
  return new Promise<string>((resolve, reject) => {
    // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
    setTimeout(() => {
      resolve('');
      this.data.push("增加的条目" + this.data.length);
    }, 2000);
  });
},
customLoad: null,
customRefresh: null,
})

其中List组件需要设置edgeEffect属性为(EdgeEffect.None)

设置属性示例和设置自定义动画示例请看示例entry

支持lazyForEarch的数据作为数据源

LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当LazyForEach在滚动容器中使用了,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用

接口描述:

代码语言:typescript
AI代码解释
复制
LazyForEach(
    dataSource: IDataSource,             // 需要进行数据迭代的数据源
    itemGenerator: (item: any, index?: number) => void,  // 子组件生成函数
    keyGenerator?: (item: any, index?: number) => string // 键值生成函数
): void

IDataSource类型说明

代码语言:typescript
AI代码解释
复制
interface IDataSource {
    totalCount(): number; // 获得数据总数
    getData(index: number): Object; // 获取索引值对应的数据
    registerDataChangeListener(listener: DataChangeListener): void; // 注册数据改变的监听器
    unregisterDataChangeListener(listener: DataChangeListener): void; // 注销数据改变的监听器
}

DataChangeListener类型说明

代码语言:typescript
AI代码解释
复制
interface DataChangeListener {
    onDataReloaded(): void; // 重新加载数据时调用
    onDataAdded(index: number): void; // 添加数据时调用
    onDataMoved(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
    onDataDeleted(index: number): void; // 删除数据时调用
    onDataChanged(index: number): void; // 改变数据时调用
    onDataAdd(index: number): void; // 添加数据时调用
    onDataMove(from: number, to: number): void; // 数据移动起始位置与数据移动目标位置交换时调用
    onDataDelete(index: number): void; // 删除数据时调用
    onDataChange(index: number): void; // 改变数据时调用
}

具体使用请看 openharmony:LazyForEach:数据懒加载

属性(接口)说明

PullToRefresh组件属性

属性

类型

释义

默认值

data

Object[]

列表或宫格组件所绑定的数据

undefined

scroller

Scroller

列表或宫格组件所绑定的Scroller对象

undefined

customList

() => void

自定义主体布局,内部有列表或宫格组件

undefined

refreshConfigurator

PullToRefreshConfigurator

组件属性配置

PullToRefreshConfigurator

mWidth

Length

容器宽

undefined(自适应)

mHeight

Length

容器高

undefined(自适应)

onRefresh

() => Promise<string>

下拉刷新回调

1秒后结束下拉刷新动画并提示“刷新失败”

onLoadMore

() => Promise<string>

上拉加载更多回调

1秒后结束上拉加载动画

customRefresh

() => void

自定义下拉刷新动画布局

undefined

onAnimPullDown

(value?: number, width?: number, height?: number) => void

下拉中回调

undefined

onAnimRefreshing

(value?: number, width?: number, height?: number) => void

刷新中回调

undefined

customLoad

() => void

自定义上拉加载动画布局

undefined

onAnimPullUp

(value?: number, width?: number, height?: number) => void

上拉中回调

undefined

onAnimLoading

(value?: number, width?: number, height?: number) => void

加载中回调

undefined

PullToRefreshConfigurator类接口

接口

参数类型

释义

默认值

setHasRefresh

boolean

是否具有下拉刷新功能

true

setHasLoadMore

boolean

是否具有上拉加载功能

true

setMaxTranslate

number

可下拉上拉的最大距离

100

setSensitivity

number

下拉上拉灵敏度

0.7

setListIsPlacement

boolean

滑动结束后列表是否归位

true

setAnimDuration

number

滑动结束后,回弹动画执行时间

150

setRefreshHeight

number

下拉动画高度

30

setRefreshColor

string

下拉动画颜色

'#999999'

setRefreshBackgroundColor

ResourceColor

下拉动画区域背景色

'rgba(0,0,0,0)'

setRefreshTextColor

ResourceColor

下拉加载完毕后提示文本的字体颜色

'#999999'

setRefreshTextSize

number 或 string 或 Resource

下拉加载完毕后提示文本的字体大小

18

setRefreshAnimDuration

number

下拉动画执行一次的时间

1000

setLoadImgHeight

number

上拉动画中图片的高度

30

setLoadBackgroundColor

ResourceColor

上拉动画区域背景色

'rgba(0,0,0,0)'

setLoadTextColor

ResourceColor

上拉文本的字体颜色

'#999999'

setLoadTextSize

number 或 string 或 Resource

上拉文本的字体大小

18

setLoadTextPullUp1

string

上拉1阶段文本

'正在上拉刷新...'

setLoadTextPullUp2

string

上拉2阶段文本

'放开刷新'

setLoadTextLoading

string

上拉加载更多中时的文本

'正在玩命加载中...'

约束与限制

在下述版本验证通过:

  • DevEco Studio: 4.1 Canary(4.1.3.317), SDK: API11 (4.1.0.36)
  • DevEco Studio: 4.0 (4.0.3.512), SDK: API10 (4.0.10.9)
  • DevEco Studio: 4.0 Canary2(4.0.3.300), SDK: API10 (4.0.8.6)

写在最后

如果你觉得这篇内容对你还蛮有帮助,我想邀请你帮我三个小忙:

  • 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力;
  • 关注小编,同时可以期待后续文章ing🚀,不定期分享原创知识;
  • 想要获取更多完整鸿蒙最新学习知识点,可关注B站:码牛课堂鸿蒙开发;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
谢谢分享
谢谢分享
回复回复点赞举报
推荐阅读
mysql 命令完全总结 【原创】
mysql 命令完全总结 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng@csxiaoyao.com QQ: 1724338257 目录导航 mysql 命令完全总结 1. 连接mysql 2. 修改密码 3. 用户管理 3.1 新建用户 3.2 用户权限管理 3.3 删除用户 4. 数据库操作 4.
CS逍遥剑仙
2018/04/28
9890
MySQL 数据库常用命令小结
mysqladmin drop databasename 删除数据库前,有提示。
阳光岛主
2019/02/19
1.1K0
mysql常用命令
1、连接到本机上的MYSQL。 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。
taoli
2022/09/30
6480
mysql常用命令
mysql设置主键自增,删除部分数据,将主键顺序重新排序解决方案
原因:在进行数据的插入删除的时候,总会有以前创建的数据被删除的情况,但是删除后再添加,还是从当前id最大的值进行自增的,所以是这样下去可能时间长了就会超出范围
知识浅谈
2021/05/10
5K0
mysql 命令大全
1、连接到本机上的MYSQL。 首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。 如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是: mysql> 2、连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
赵腰静
2018/03/09
2.3K0
MySQL深入浅出(一):SQL基础、数据类型、运算符
注意:having是对聚合后的结果进行条件过滤,where是在聚合前就对记录进行过滤
唐成勇
2019/05/26
8160
mysql在ubuntu中的操作笔记(详)
1.安装mysql客户端流程:   -  登录navicat官网下载   -  将压缩包拷贝ubuntu中进行解压,解压命令:tar zxvf navicat.tar.gz   -  进入解压目录,运
汪凡
2018/05/29
1.3K0
MySQL 学习二:MySQL 增删改查高级命令大全以及常见错误总结
关于学习 MySQL 的基础知识请移步我的另一篇帖子:MySQL 学习一:零基础增删改查小白简单入门上手教程(附 MySQL 下载地址)
白鹿第一帅
2021/03/02
4K0
MySQL 学习二:MySQL 增删改查高级命令大全以及常见错误总结
实用 SQL 语句收藏这篇就够了
语法:create index index_name on table_name (column_name)
我是一条小青蛇
2019/10/23
9920
MySQL基础知识
整型:TINYINT  SMALLINT   MEDIUMINT  INT BIGINT
CBeann
2023/12/25
2160
MySQL数据表中的auto_increment自增值属性及修改
长期以来,我的博客数据库中连续文章的主键编号一直都不是连续的,让我这个强迫症晚期患看着很不舒服。在忍受了这么长时间以后,趁着给博客换域名的时机,我把所有的文章编号全部改成了连续的,可算是舒服多了。
知识分子没文化
2023/07/01
5.2K1
MySQL数据表中的auto_increment自增值属性及修改
MySQL DDL 数据定义
在 MySQL 中,DATABASE 和 SCHEMA 在语法上是等效的,它们都用于创建数据库。在其他 RDBMS(如 Oracle 和 SQL Server)
恋喵大鲤鱼
2023/10/12
5000
MySQL 常用命令 原
(adsbygoogle = window.adsbygoogle || []).push({});
tianyawhl
2019/04/04
8910
Linux命令行SQL语句
-- 链接数据库 mysql -uroot -p mysql -uroot -pmysql
对弈
2019/09/04
3.1K0
SQL之mysql常用操作语句(入门级)
1.进入数据库: mysql -u root -p    mysql -h localhost -u root -p database_name   2.列出数据库 show databases;   3.选择数据库: use databases_name;   4.列出数据表: show tables;   5.显示表格列的属性 show columns from table_name;    describe table_name;   6.导出整个数据库: mysqldump -u user_name
互联网金融打杂
2018/04/03
6990
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
在MySQL数据库中,约束是一种对数据表中数据进行限制和检查的方法,可以保证数据表中数据的完整性和一致性。本文将深入剖析MySQL中的各种约束,包括非空约束、唯一性约束、主键约束、自增列、外键约束、默认值约束以及CHECK约束等等,同时结合开发场景给出约束使用和实践的技巧和方法,帮助读者更好地掌握MySQL中数据表相关操作的技巧和方法。
默 语
2024/11/20
8090
MySQL数据库,从入门到精通:第十三篇——MySQL数据表约束详解
解决Typecho文章cid不连续
Typecho下文章编号(cid)不连续,虽然不影响什么,也无关紧要,但是对于有强迫症的人(比如我)来说,真的是无法忍受。还好有大佬提供了解决办法。
季春二九
2023/03/22
5230
Mysql基础入门知识点总结笔记
create table relationship (id int(4) primary key,name char(10)
网络安全自修室
2021/11/25
4250
Mysql基础入门知识点总结笔记
Java面试之数据库常用语句
>id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, //id值,无符号、非空、递增——唯一性,可做主键。
黄桂期
2018/07/26
9030
MySQL:基本命令
一、数据库操作 1、查询数据库,命令如下: SHOW DATABASES; ---- 2、我们可以在登陆 MySQL 服务后,使用 create 命令创建数据库,命令格式: CREATE DATABASE 数据库名; ---- 3、使用 drop 命令删除数据库,命令格式: drop database 数据库名; ---- 4、使用 use 命令选择数据库,命令格式: use database 数据库名; ---- 二、数据表操作 1、创建MySQL数据表的SQL通用语法: CREATE TABLE ta
栗筝i
2022/12/01
3310
相关推荐
mysql 命令完全总结 【原创】
更多 >
LV.2
苏宁消费金融安全运维部总经理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档