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