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