繁体   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