[英]Why does calling Android ListView's setOnScrollListener immediately call the listener even though there was no scrolling?
在Android AbsListView上设置滚动侦听器会导致该侦听器立即被调用。 显然,这是来自AbsListView.java
的源AbsListView.java
:
public void setOnScrollListener(OnScrollListener l) {
mOnScrollListener = l;
invokeOnItemScrollListener();
}
为什么有人要这个?
设置单击/触摸侦听器不会导致立即调用该侦听器,为什么滚动侦听器有所不同? 我是否缺少一些合理的理由?
有人被这种奇怪的行为咬伤的相关问题: 当我设置listView.onScrollListener(this)时,onScroll被调用,但是没有任何接触
因此,滚动侦听器会被告知列表的初始位置。 因为列表总是滚动到某个位置(即使只有0),但单击和触摸并不总是发生。
最终,这只是设计决定,他们可能会选择哪种方式。 如果有可用数据,很多GUI框架会在注册时立即调用侦听器,这并不罕见。 如果您不满意,请对您的监听器进行编码以忽略第一个呼叫。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.