为什么即使没有滚动,调用Android ListView的setOnScrollListener也会立即调用监听器?

时间:2014-12-19 01:05:22

标签: android listview android-listview onscrolllistener

Android AbsListView上的

Setting a scroll listener会导致立即调用该侦听器。这显然是故意的the source of AbsListView.java

public void setOnScrollListener(OnScrollListener l) {
    mOnScrollListener = l;
    invokeOnItemScrollListener();
}

为什么有人想要这个?

设置click / touch侦听器不会立即调用侦听器,为什么滚动侦听器会有所不同?我缺少一些合理的理由吗?

相关问题,其中某人被这种奇怪的行为所困扰:onScroll gets called when I set listView.onScrollListener(this), but without any touch

1 个答案:

答案 0 :(得分:1)

以便向滚动侦听器通知列表的初始位置。因为列表总是滚动到某个地方(即使只是0),而点击和触摸始终不会发生。

最后,这只是一个设计决定,他们可以采取任何一种方式。如果有可用的数据,那么很多GUI框架都会在注册时立即调用侦听器。如果这会搞砸你,那么请为你的听众编写代码以忽略第一个电话。