HarmonyOS 上拉加载下拉刷新的控件有没有已经封装好了的

数据请求写在listTouchEvent里,关联性太强,需要一个封装好,把上拉下拉布局暴露在外由用户设定,监听也有的。

HarmonyOS
2天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

PullToRefresh可用的下拉刷新、上拉加载组件。可参考链接:https://gitee.com/openharmony-sig/PullToRefreshdemo如下:

import { PullToRefresh } from '@ohos/pulltorefresh'

@Entry
@Component
struct Index {
  @State refreshText: string = '';
  private dataNumbers: string[] = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
  private dataStrings: string[] =
    ['我的评论', '与我相关', '个人中心1', '个人中心2', '个人中心3', '我的发布', '设置', '退出登录'];
  @State data: string[] = this.dataStrings;
  // 需绑定列表或宫格组件
  private scroller: Scroller = new Scroller();

  build() {
    Column() {
      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,
      })
    }
  }

  @Builder
  private getListView() {
    List({ space: 20, scroller: this.scroller }) {
      ForEach(this.data, (item: string) => {
        ListItem() {
          Text(item)
            .width(160)
            .height(150)
            .fontSize(20)
            .textAlign(TextAlign.Center)
            .backgroundColor('#95efd2')
        }
      })
    }
    .backgroundColor('#eeeeee')
    .divider({ strokeWidth: 1, color: 0x222222 })
    .edgeEffect(EdgeEffect.None) // 必须设置列表为滑动到边缘无效果
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
加载下拉刷新组件
438浏览 • 1回复 待解决
下拉刷新加载API为9sdk
2800浏览 • 1回复 待解决
有没有异步封装好一些网络请求?
191浏览 • 1回复 待解决
HarmonyOS 加载更多
37浏览 • 1回复 待解决
HarmonyOS 有没有密码控件
356浏览 • 1回复 待解决
HarmonyOS 有没有图片裁剪控件
72浏览 • 1回复 待解决