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
答案 0 :(得分:1)
以便向滚动侦听器通知列表的初始位置。因为列表总是滚动到某个地方(即使只是0),而点击和触摸始终不会发生。
最后,这只是一个设计决定,他们可以采取任何一种方式。如果有可用的数据,那么很多GUI框架都会在注册时立即调用侦听器。如果这会搞砸你,那么请为你的听众编写代码以忽略第一个电话。