【问题标题】:Why does calling Android ListView's setOnScrollListener immediately call the listener even though there was no scrolling?为什么即使没有滚动,调用Android ListView 的setOnScrollListener 也会立即调用监听器?
【发布时间】:2014-12-19 01:05:22
【问题描述】:

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

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

为什么会有人想要这个?

设置点击/触摸监听器不会立即调用监听器,为什么滚动监听器不同?我错过了一些合理的理由吗?

有人被这种奇怪行为咬伤的相关问题:onScroll gets called when I set listView.onScrollListener(this), but without any touch

【问题讨论】:

    标签: android listview android-listview onscrolllistener


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-19
      • 2013-01-19
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2021-12-01
      • 2015-08-10
      相关资源
      最近更新 更多