[英]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.