下拉刷新上拉加载 HarmonyOS 鸿蒙Next

发布于 1周前 作者 sinazl 来自 鸿蒙OS

下拉刷新上拉加载 HarmonyOS 鸿蒙Next
有实现下拉刷新和上拉加载的demo吗?

3 回复

有的,可以参考这个demo:https://gitee.com/harmonyos_codelabs/NewsData,官网codelab的;

或者参考官网行业实践,也有上拉加载下拉刷新:https://developer.huawei.com/consumer/cn/doc/architecture-guides/practice-news-app-architecture-v1-0000001938013088#section3250182303610

另外,有个开源网站上收录了UI、系统接口、Web、创新特性等场景化鸿蒙示例DEMO,开发中也可以参考参考:https://gitee.com/scenario-samples/demo-index。这里面的“List组件的使用之商品列表”demo就有列表的懒加载和下拉刷新可供参考。

更多关于下拉刷新上拉加载 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


下拉刷新和上拉加载,基本上就是这样

@Entry
@Component
struct Page2 {

  @State list:string[] = []
  @State isRefreshing: boolean = false
  @State canLoadMore: boolean = false;
  private loading: boolean = false;

  refreshData() {
    setTimeout(() =>{
      const list:string[] = [];
      for (let i = 0; i < 3; i++) {
        list.push(`条目   ${i}`);
      }
      this.list = list;
      this.isRefreshing = false;
      this.canLoadMore = true;
    }, 800)
  }

  loadData() {
    if (this.loading) {
      return;
    }
    this.loading = true;
    setTimeout(() =>{
      const list:string[] = [];
      for (let i = 0; i < 3; i++) {
        list.push(`条目   ${this.list.length + i}`);
      }
      this.list.push(...list);
      if (this.list.length >= 20) {
        this.canLoadMore = false;
      } else {
        this.canLoadMore = true;
      }
      this.loading = false;
    }, 800)
  }

  build() {
    RelativeContainer() {
      Refresh({ refreshing: this.isRefreshing }) {
        List() {
          ForEach(this.list, (item: string, index: number) {
            ListItem(){
              Text(item).textAlign(TextAlign.Center).width('100%').height(100)
            }
          })

          ListItem() {
            Text(this.canLoadMore ? "正在加载..." : "全部加载完毕").textAlign(TextAlign.Center).width('100%').height(50)
          }
        }.height('100%')
        .width('100%')
        .onReachEnd(()=>{
          if (this.canLoadMore) {
            this.loadData();
          }
        })
      }.onRefreshing(()=>{
         this.refreshData();
      })
    }
    .height('100%')
    .width('100%')
  }
}

实际得根据UI效果进行调整,整体逻辑上和这个差不多

在HarmonyOS(鸿蒙)系统中实现下拉刷新和上拉加载功能,通常涉及到应用界面的列表视图控制。这些功能通常通过特定的组件或框架来实现,而不是直接通过编程语言的基础功能。以下是对这两个功能的简要说明:

  1. 下拉刷新: 下拉刷新功能允许用户在向下拖动列表视图时触发数据刷新操作。在HarmonyOS中,你可以使用系统提供的刷新组件(如SwipeRefresh)来实现这一功能。通过设置该组件的属性并绑定相应的刷新事件处理函数,你可以轻松地实现下拉刷新效果。

  2. 上拉加载: 上拉加载功能允许用户在滚动到列表底部时触发更多数据的加载。这通常通过监听列表视图的滚动事件,并在滚动到底部时触发加载操作来实现。在HarmonyOS中,你可以结合使用列表组件(如List)和滚动事件监听器来实现上拉加载功能。

请注意,具体的实现方式可能会因应用的具体需求和所使用的框架而有所不同。如果你在实现过程中遇到问题,建议查阅HarmonyOS的官方文档或示例代码,以获取更详细的指导和示例。

如果问题依旧没法解决请联系官网客服,官网地址是: https://www.itying.com/category-93-b0.html

回到顶部