加载时,我正在尝试使ListView滚动到底部。但是,什么也没有发生。这是我在Android上运行的功能:

   <ListView #lv row="0" [items]="myItems" class="list-group" separatorColor="transparent" [itemTemplateSelector]="templateSelector">


然后在Typescript中,我有:

  @ViewChild('lv') listViewElem: ElementRef;

    private scrollToBottom(lv: ListView) {
    if (lv && lv.items.length > 0) {
        lv.scrollToIndex(lv.items.length - 1);
        lv.refresh();
    }
}

  ngAfterViewInit() {
    setTimeout(() => {
       this.scrollToBottom(this.listViewElem.nativeElement);
    }, 500);
}


在我调试时,一切似乎都很好。在ngAfterViewInit中,定义了listViewElem,在scrollToBottomView中,将项设置为包含6个元素的数组。但是当它被调用时,什么也没有发生。

我还尝试向视图中添加一个按钮,当您单击该按钮时,我调用相同的逻辑来查看它是否只是加载时初始化顺序,但这也不起作用:

  <Label row="0" text="Click Me" filter(tap)="scrollNow()"></Label>


和:

 public scrollNow(): void {
     this.scrollToBottom(this.listViewElem.nativeElement);
  }


有任何想法吗?

最佳答案

我可能知道为什么您要在lv.refresh();之后立即尝试scrollToIndex,因为刷新将重新加载ListView,并且它只会重新开始。

10-02 00:56