簡體   English   中英

為什么即使沒有滾動,調用Android ListView的setOnScrollListener也會立即調用偵聽器?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM