纯血鸿蒙实战开发—如何添加下拉革新组件PullToRefresh

打印 上一主题 下一主题

主题 825|帖子 825|积分 2475

1.PullToRefresh

2.添加依靠

  1.   ohpm install @ohos/pulltorefresh
复制代码
oh-package.json5版本修改为2.0.1。
  1. {
  2.   "name": "base_demo",
  3.   "version": "1.0.0",
  4.   "description": "Please describe the basic information.",
  5.   "main": "",
  6.   "author": "",
  7.   "license": "",
  8.   "dependencies": {
  9.     "@ohos/pulltorefresh": "2.0.1"
  10.   },
  11.   "devDependencies": {
  12.     "@ohos/hypium": "1.0.6"
  13.   }
  14. }
复制代码
3.示例代码

3.1 PullToRefreshPage测试页面

  1. import { PullToRefresh } from '@ohos/pulltorefresh'
  2. @Entry
  3. @Component
  4. struct PullToRefreshPage {
  5.     TAG = 'PullToRefreshPage'
  6. @State itemList: string[] = ['北京', '天津', '上海', '深圳', '珠海', '厦门', '青岛', '大连', '威海', '烟台', '旅顺', '长春', '哈尔滨', '沈阳']
  7.     private scroller: Scroller = new Scroller();
  8. @Builder
  9.     navigationTitle() {
  10.         Column() {
  11.             Text('城市')
  12.                 .fontColor('#182431')
  13.                 .fontSize(30)
  14.                 .lineHeight(41)
  15.                 .fontWeight(700)
  16.         }.alignItems(HorizontalAlign.Start)
  17.     }
  18. @Builder
  19.     buildList() {
  20.         List({ space: 3, scroller: this.scroller }) {
  21.             ForEach(this.itemList, (item, index) => {
  22.                 ListItem() {
  23.                     Row() {
  24.                         Image($r('app.media.icon'))
  25.                             .width(40)
  26.                             .height(40)
  27.                             .margin({ left: 10, right: 20 })
  28.                         Text(`${index}.${item}`).fontSize(20)
  29.                     }.width('100%')
  30.                         .height('100%')
  31.                 }
  32.             .width('100%')
  33.                     .height(60)
  34.             })
  35.         }
  36.     .divider({ strokeWidth: 0.5, color: Color.Green, startMargin: 10, endMargin: 10 })
  37.             .width('100%')
  38.             // 特别注意:必须设置列表为滑动到边缘无效果,否则无法触发pullToRefresh组件的上滑下拉方法。
  39.             .edgeEffect(EdgeEffect.None)
  40.     }
  41.     build() {
  42.         Navigation() {
  43.             PullToRefresh({
  44.                 // 必传项,列表组件所绑定的数据
  45.                 data: this.itemList,
  46.                 // 必传项,需绑定传入主体布局内的列表或宫格组件
  47.                 scroller: this.scroller,
  48.                 // 必传项,自定义主体布局,内部有列表或宫格组件
  49.                 customList: () => {
  50.                     this.buildList()
  51.                 },
  52.                 // 可选项,下拉刷新回调
  53.                 onRefresh: () => {
  54.                     console.info(`${this.TAG} onRefresh`)
  55.                     return new Promise<string>((resolve, reject) => {
  56.                         // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  57.                         console.info(`${this.TAG} Promise`)
  58.                         setTimeout(() => {
  59.                             resolve('刷新成功');
  60.                             console.info(`${this.TAG} resolve`)
  61.                             //this.itemList = this.dataNumbers;
  62.                             const citys: string[] = ['上拉刷新出来的郑州', '上拉刷新出来的济南', '上拉刷新出来的沈阳']
  63.                             this.itemList = this.itemList.concat(citys)
  64.                             console.info(`${this.TAG} itemList:${this.itemList} `)
  65.                         }, 1000);
  66.                     });
  67.                 },
  68.                 // 可选项,上拉加载更多回调
  69.                 onLoadMore: () => {
  70.                     return new Promise<string>((resolve, reject) => {
  71.                         console.info(`${this.TAG} onLoadMore Promise`)
  72.                         // 模拟网络请求操作,请求网络2秒后得到数据,通知组件,变更列表数据
  73.                         setTimeout(() => {
  74.                             console.info(`${this.TAG}  onLoadMore resolve`)
  75.                             resolve('');
  76.                             this.itemList.push('上拉加载出来的武汉')
  77.                             console.info(`${this.TAG} onLoadMore itemList:${this.itemList} `)
  78.                         }, 1000);
  79.                     });
  80.                 },
  81.                 customLoad: null,
  82.                 customRefresh: null,
  83.             })
  84.         }
  85.     .title(this.navigationTitle())
  86.             .titleMode(NavigationTitleMode.Mini)
  87.     }
  88. }
复制代码
3.2.注意事项

List必须设置滑动到边沿没有效果
  1. edgeEffect(EdgeEffect.None)
复制代码
否则无法触发pullToRefresh组件的上滑下拉方法。
4.效果


末了

假如你想快速提升鸿蒙技能,那么可以直接领取这份包含了:【OpenHarmony多媒体技能、Stage模型、ArkUI多端摆设、分布式应用开发、音频、视频、WebGL、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战】等技能知识点。
鸿蒙Next全套VIP学习资料←点击领取!(安全链接,放心点击
1.鸿蒙焦点技能学习路线


2.大厂面试必问面试题


3.鸿蒙南向开发技能


 4.鸿蒙APP开发必备


 5.HarmonyOS Next 最新全套视频教程



 6.鸿蒙生态应用开发白皮书V2.0PDF


这份全套完整版的学习资料已经全部打包好,朋友们假如必要可以点击鸿蒙Next全套VIP学习资料免费领取(安全链接,放心点击


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

愛在花開的季節

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表