HarmonyOS如何实现List无限循环,例:List第一项再上拖是从列表最后一项

HarmonyOS如何实现List无限循环,例:List第一项再上拖是从列表最后一项

HarmonyOS
2024-08-04 17:44:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

代码如下:

// xxx.ets 
@Entry 
@Component 
struct page { 
  @State arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
  realLength = this.arr.length 
  private scroller: Scroller = new Scroller() 
 
  aboutToAppear(): void { 
    const length: number = this.arr.length 
    const arrTemp: Array<number> = JSON.parse(JSON.stringify(this.arr)) 
    for (let i = length - 1; i >= 0; i--) { 
      this.arr.unshift(arrTemp[i]) 
    } 
    for (let i = 0; i < length; i++) { 
      this.arr.push(arrTemp[i]) 
    } 
  } 
  build() { 
    Column() { 
      List({ space: 20, initialIndex: 10, scroller: this.scroller }) { 
        ForEach(this.arr, (item: number) => { 
          ListItem() { 
            Text('' + item) 
              .width('100%') 
              .height(100) 
              .fontSize(16) 
              .textAlign(TextAlign.Center) 
              .borderRadius(10) 
              .backgroundColor(0xFFFFFF) 
          } 
        }, (item: number, index: number) => item + index.toString()) 
      } 
      .listDirection(Axis.Vertical) // 排列方向 
  
      .edgeEffect(EdgeEffect.None) 
      .width('90%') 
      .onScrollIndex((start: number, end: number) => { 
        console.log('start', start.toString()) 
        console.log('end', end.toString()) 
        if (start < this.realLength) { 
          this.arr.unshift(this.arr[this.arr.length-1]) 
          this.arr.pop() 
          console.log(this.arr.length.toString()) 
          this.scroller.scrollBy(0, 120) 
        } 
        if (end > this.realLength + 10) { 
          this.arr.push(this.arr[0]) 
          this.arr.shift() 
          this.scroller.scrollBy(0, -120) 
        } 
      }) 
    } 
    .width('100%') 
    .height('100%') 
    .backgroundColor(0xDCDCDC) 
    .padding({ top: 5 }) 
  } 
}
分享
微博
QQ
微信
回复
2024-08-05 12:26:12
相关问题
HarmonyOS List第一个可见的ListItem
116浏览 • 1回复 待解决
HarmonyOS 要做个可以无限滚动的list
325浏览 • 1回复 待解决
list 支持循环滚动吗?
2069浏览 • 1回复 待解决
HarmonyOS 列表List相关问题
213浏览 • 1回复 待解决
HarmonyOS 列表展示list懒加载问题
384浏览 • 1回复 待解决
HarmonyOS如何实现list listitem拖拽
551浏览 • 1回复 待解决
List列表组件如何改为横向显示的?
591浏览 • 1回复 待解决