ArkTS的滑动加载案例

 

/**
 * ArkTS的滑动加载案例
 */

// 自定义文章类
class Article {
  public id: number
  public title: string
  public content: string

  constructor(id:number, title:string, content:string) {
    this.id = id
    this.title = title
    this.content = content
  }
}

// 定义一篇文章展示的子组件
@Component
struct ArticleComponent {

  article: Article

  build() {
    Row() {
      // Image('../../resources/base/media/icon.png')
      Image($r('app.media.icon'))
        .width(80)
        .height(80)
        .margin({right: 20})

      Column() {
        Text(this.article.title)
          .fontSize(20)
          .margin({bottom: 8})
          .fontColor(Color.Red)

        Text(this.article.content)
          .fontSize(16)
          .fontColor(Color.Brown)
          .margin({bottom: 8})
      }
      .alignItems(HorizontalAlign.Start)
      .width('80%')
      .height('100%')
    }
    .padding(20)
    .borderRadius(12)  // 圆角矩形
    .backgroundColor('#FFECECEC')
    .height(80)
    .width('100%')
    .justifyContent(FlexAlign.SpaceBetween)
  }
}

@Entry
@Component
struct MyParent {
  // 是否导到列表的底部
  @State isListReachEnd: boolean = false
  @State
  article_array: Array<Article> = [
  // 初始化的时候,先创建几篇文章
    new Article(1, '第1篇文章', '精进自己,分享他人!'),
    new Article(2, '第2篇文章', '精进自己,分享他人!'),
    new Article(3, '第3篇文章', '精进自己,分享他人!'),
    new Article(4, '第4篇文章', '精进自己,分享他人!'),
    new Article(5, '第5篇文章', '精进自己,分享他人!'),
    new Article(6, '第6篇文章', '精进自己,分享他人!'),
    new Article(7, '第7篇文章', '精进自己,分享他人!'),
    new Article(8, '第8篇文章', '精进自己,分享他人!'),
    new Article(9, '第9篇文章', '精进自己,分享他人!')
  ]

  build() {
    Column() {
      List() {
        ForEach(this.article_array, (item: Article)=>{
          ArticleComponent({article: item})
            .margin({top:20})

        })
      }.onReachEnd(()=>{
        // 到达列表的底部
        this.isListReachEnd = true
      })
      .parallelGesture(PanGesture({direction:PanDirection.Up, distance:80})
        .onActionStart(()=>{
          // 检测到往上滑动的手势
          if (this.isListReachEnd) {
            // 加载新的文章
            for (let index = 0; index < 3; index++) { // 一次加载3篇文章,循环可更改
              let count = this.article_array.length
              let new_id = count + 1
              this.article_array.push(new Article(new_id, '第'+new_id+'篇文章','精进自己,分享他人!'))
              this.isListReachEnd = false
            }
          }
        }))
      .padding(20)
      .scrollBar(BarState.Off)
    }
    .width('100%')
    .height('100%')
  }
}

 

 

 

来源B站公开视频:
华为大佬最新鸿蒙HarmonyOS4.0(鸿蒙4)开发应用从入门到实战视频教程

posted @ 2024-01-17 11:57  宝山方圆  阅读(72)  评论(0编辑  收藏  举报