HarmonyOS listitem有直接返回index的方法吗?

目前List里样式众多,很多listitem通过if来判断是否展示的,想要通过点击外部button让列表自动滚动到相应的item处。

HarmonyOS
2024-10-12 11:26:59
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Heiang

点击外部button让列表自动滚动到相应的item处,可以通过:

1.声明: scroller: Scroller = new Scroller();

2.绑定:List({ space: 20, initialIndex: 0,scroller:this.scroller }) {} (如果你是跳转到新的页面可以直接通过初始index:initialIndex来设置)

3.点击button的时候执行: this.scroller.scrollToIndex(想跳转的index,true);

参考demo:

@Entry  
@Component  
struct ListItemExample {  
  scroll: ListScroller = new ListScroller()  
  listIndex: number = 0  
  targetObj: Record<string, number> = {}  
  articleDetail: ESObject = {  
    header: 'header1',  
    content1: 'cont1',  
    content2: '',  
    content3: 'cont3',  
    footer: 'footer1'  
  }  
  @Builder  
  TextBuild(name: string) {  
    Text('' + name)  
      .width('100%')  
      .height(400)  
      .fontSize(16)  
      .textAlign(TextAlign.Center)  
      .borderRadius(10)  
      .backgroundColor(0xFFFFFF)  
  }  
  getTargetIndex(index: number): boolean {  
    this.targetObj[index] = this.listIndex  
    this.listIndex++  
    return true  
  }  
  build() {  
    Stack({ alignContent: Alignment.Bottom }) {  
      List({ space: 20, initialIndex: 0, scroller: this.scroll }) {  
        if (this.articleDetail.header && this.getTargetIndex(0)) {  
          ListItem() {  
            this.TextBuild(this.articleDetail.header)  
          }  
        }  
        if (this.articleDetail.content1 && this.getTargetIndex(1)) {  
          ListItem() {  
            this.TextBuild(this.articleDetail.content1)  
          }  
        }  
        if (this.articleDetail.content2 && this.getTargetIndex(2)) {  
          ListItem() {  
            this.TextBuild(this.articleDetail.content2)  
          }  
        }  
        if (this.articleDetail.content3 && this.getTargetIndex(3)) {  
          ListItem() {  
            this.TextBuild(this.articleDetail.content3)  
          }  
        }  
        if (this.articleDetail.footer && this.getTargetIndex(4)) {  
          ListItem() {  
            this.TextBuild(this.articleDetail.footer)  
          }  
        }  
      }.width('90%')  
      .height('100%')  
      .scrollBar(BarState.Off)  
      Button('click').onClick(() => {  
        console.log('targetObj' + JSON.stringify(this.targetObj), this.targetObj[3])  
        this.scroll.scrollToIndex(this.targetObj[3], true)  
      })  
    }.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })  
  }  
}
分享
微博
QQ
微信
回复
2024-10-12 16:47:48
相关问题
HarmonyOS通过方法调用loading
369浏览 • 0回复 待解决
c++侧可以直接调用tsstatic方法
2087浏览 • 1回复 待解决
LocalParticleAbility替代方法
2942浏览 • 1回复 待解决
HarmonyOS HMAC加密对应方法
411浏览 • 1回复 待解决
HarmonyOS 设置字体全局方法
221浏览 • 1回复 待解决
那种公共标题返回标题控件
1726浏览 • 1回复 待解决
MySQL escape方法问题了解
2477浏览 • 1回复 待解决
HarmonyOS 有没有方法直接退出APP
572浏览 • 1回复 待解决
HarmonyOS listItem问题
218浏览 • 1回复 待解决
同步方法获取IP地址
331浏览 • 1回复 待解决
C++中native方法能否直接导出
1938浏览 • 1回复 待解决
Listitem点击变色什么好方法
2138浏览 • 1回复 待解决
提问
该提问已有0人参与 ,帮助了0人