# HarmonyOSRefreshV2
**Repository Path**: abnercode/harmony-osrefresh-v2
## Basic Information
- **Project Name**: HarmonyOSRefreshV2
- **Description**: refresh_v2,是一款支持V2装饰器,简单,高效的上拉下拉刷新组件,支持列表、网格、瀑布流、支持各种任意组件刷新,支持侧滑删除、条目吸顶,下滑二楼等功能。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-03-25
- **Last Updated**: 2025-03-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 介绍
refresh_v2,是一款支持V2装饰器,简单,高效的上拉下拉刷新组件,支持列表、网格、瀑布流、支持各种任意组件刷新,支持侧滑删除、条目吸顶,下滑二楼等功能。
如果您打算继续使用V1装饰器版本刷新库,可点击直达:[refresh](https://ohpm.openharmony.cn/#/cn/detail/@abner%2Frefresh)
**v1和V2使用方式完全一样,大家可无缝切换,只需修改下依赖即可。**
如果您只想简单的下拉刷新和上拉加载,并且耦合度低,建议您使用我的另一款**轻盈的刷新组件**
,点击直达:[lithe_refresh](https://ohpm.openharmony.cn/#/cn/detail/@abner%2Flithe_refresh)
主要功能点如下:
- 1、**支持ListView列表/下拉刷新/上拉加载**
- 2、**支持GridView网格列表/下拉刷新/上拉加载**
- 3、**支持StaggeredGridView瀑布流列表/下拉刷新/上拉加载**
- 4、**支持自定义刷新头和加载尾**
- 5、**支持列表(ListView/GridView/StaggeredGridView)添加头组件**
- 6、**支持列表(ListView)侧滑展示按钮,左右均可**
- 7、**支持下滑进入二楼/半楼功能(仿京东或淘宝)**
- 8、**数据操作(增删改查)提供便捷方式,适应更多场景运用**
- 9、**支持页面刷新加载吸顶效果(ListView/GridView/StaggeredGridView)**
- 10、**支持默认进入页面自动刷新/手动刷新**
- 11、**支持内部缺省页设置(空布局/错误布局)**
- 12、**支持ListView条目分组吸顶效果**
- 13、**默认刷新头支持三个点旋转效果**
- 14、**ListView支持滑动直接删除**
## 效果
### 所有功能
### 刷新效果
### 列表自定义头部效果
### 列表侧滑展示按钮效果
### 吸顶效果
**动态效果:**
## 开发环境
DevEco Studio NEXT Developer Beta1,Build Version: 5.0.7.200
Api版本:**12**
modelVersion:5.0.0
## 快速使用
有多种使用方式,比如远程依赖、本地静态共享包依赖,源码方式依赖,推荐使用**远程依赖**,方便快捷,有最新修改可以及时生效。
### 远程依赖方式使用
方式一:在Terminal窗口中,执行如下命令安装三方包,DevEco Studio会自动在工程的oh-package.json5中自动添加三方包依赖。
**建议:在使用的模块路径下进行执行命令。**
```
ohpm install @abner/refresh_v2
```
方式二:在工程的oh-package.json5中设置三方包依赖,配置示例如下:
```
"dependencies": { "@abner/refresh_v2": "^1.0.0"}
```

### 查看是否引用成功
无论使用哪种方式进行依赖,最终都会在使用的模块中,生成一个oh_modules文件,并创建源代码文件,有则成功,无则失败,如下:

## 代码使用
目前提供了多种种用法,一种是ListView形式,就是单列表形式,一种是GridView形式,也就是网格列表形式,一种是StaggeredGridView形式,也就是
瀑布流形式,还有一种就是RefreshLayout形式,支持任何的组件形式,比如Column,Row等等。
需要注意,目前ListView、GridView、StaggeredGridView是自带刷新的,当然了您也可以当作普通的列表进行使用。
还有一点需要注意,目前默认情况下是**懒加载数据模式**。
**需要注意**:默认列表是没有高度的,如果你要实现定位或者获取滑动位置,必须要设置高度,100%或者其它,目前上拉加载是带有缩回的,如果
你要直接加载数据,请设置slideDisplayLoadData为true,关于禁止阻尼效果,isScrollSpring为false即可。
### 1、ListView
#### 1、懒加载数据使用(LazyForEach)
默认情况下既是,目的是进行组件销毁回收以降低内存占用,提高性能,当然了也是推荐使用,相对于普通使用,需要使用RefreshDataSource进行数据的增删改查!
```typescript
controller: RefreshController = new RefreshController() //刷新控制器,声明全局变量
dataSource: RefreshDataSource = new RefreshDataSource() //数据懒加载操作对象,执行数据增删改查
ListView({
lazyDataSource: this.dataSource,
itemLayout: (item, index) => this.itemLayout(item, index), //条目布局
controller: this.controller, //控制器,负责关闭下拉和上拉
onRefresh: () => {
//下拉刷新
//数据懒加载使用:
//0、数据初始化,this.dataSource.initData()
// 1、数组数据添加,this.dataSource.pushDataArray(),
// 2、单个数据添加,this.dataSource.pushData()
this.controller.finishRefresh() //关闭下拉刷新,在数据请求回后进行关闭
},
onLoadMore: () => {
//上拉加载
//数据懒加载使用:1、数组数据添加,this.dataSource.pushDataArray(),2、单个数据添加,this.dataSource.pushData()
this.controller.finishLoadMore() //关闭上拉加载,在数据请求回后进行关闭
}
})
/**
* Author:AbnerMing
* Describe:条目布局
* @param item 数据对象
* @param index 数据索引
*/
@Builder
itemLayout(item:Object, index:number):void {
//条目视图,任意组件
}
```
#### 2、普通使用(ForEach)
普通使用正常的数据加载即可,只需关注数据源。
```typescript
controller: RefreshController = new RefreshController() //刷新控制器,声明全局变量
ListView({
items: this.array, //数据源 数组,任意类型
itemLayout: (item, index) => this.itemLayout(item, index),
controller: this.controller, //控制器,负责关闭下拉和上拉
isLazyData: false, //禁止懒加载,也就是使用ForEach进行数据加载
onRefresh: () => {
//下拉刷新
this.controller.finishRefresh();
},
onLoadMore: () => {
//上拉加载
this.controller.finishLoadMore();
}
})
/**
* Author:AbnerMing
* Describe:条目布局
* @param item 数据对象
* @param index 数据索引
*/
@Builder
itemLayout(item:Object, index:number):void {
//条目视图,任意组件
}
```
#### 3、相关属性介绍
| 属性 | 类型 | 概述 |
|-------------------------|---------------------------------------------|--------------------------------------------------|
| items | Array\