簡體   English   中英

是否可以檢測 RecyclerView 項目是否到達屏幕頂部?

[英]Is it possible to detect if a RecyclerView item reached the top of the screen?

我想檢測 RecyclerView 項目何時到達屏幕頂端以更改其他視圖。 有沒有辦法做到這一點?

你需要給你的 recyclerview 添加一個滾動監聽器 object。

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
            @Override
            public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                    if (!recyclerView.canScrollVertically(-1)) {
                        //top end reached
                    }
            }
        });

這里, -1表示從下往上滾動。 同樣, 1表示從上到下滾動。

相同的約定適用於 Horizontal RecyclerView。 只需使用canScrollHorizontally()而不是canScrollVertically()

如果你有你的項目的 position,你可以使用這個

recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
    override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
        super.onScrolled(recyclerView, dx, dy)
        val top = recyclerView.findViewHolderForAdapterPosition(position)?.itemView?.top
        if(top == 0) { 
            //item reached top end 
        }
    }
})

小心findViewHolderForAdapterPosition將在 viewHolder 被回收且不再可見時返回null

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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