Nativescript无法将ListView滚动到底部

时间:2018-02-10 18:11:11

标签: android listview scroll nativescript angular5

加载时,我试图让ListView滚动到底部。然而,没有任何反应。以下是我在Android上运行的内容:

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

然后在打字稿中我有:

  @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);
  }

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

我可以知道为什么你会在lv.refresh();之后立即尝试scrollToIndex,因为刷新会重新加载ListView,它会重新开始。

答案 1 :(得分:0)

set.seed(100)
data1 = rnorm(10000, mean=8, sd=1.3)
data2 = rnorm(10000, mean=4, sd=1.0)

#plot data1 histogram with 40 bins
hist(data1, breaks=40, col="red", xlim=c(2,14), ylim=c(0,800),
     main="Gaussian deviates :  mean=8, sigma=1.3", col.main="blue")
segments(quantile(data1,0.25), 0, quantile(data1,0.25), 600, col="green", lwd=4, lty=1)



q1 <- quantile(data1, 0.25)
#plot data2 histogram with 40 bins
hist(data2, breaks=40, col="red", xlim=c(2,14), ylim=c(0,900),
     main="Gaussian deviates :  mean=4, sigma=1.0", col.main="blue")


print(quantile(data1,0.25))
#>      25% 
#> 7.133474
ecdf(data2)(q1)
#> [1] 0.9993

chatMessages是您可观察的数组。