如何在滚动RecyclerView时获得更新的滚动位置



我有一个回收器视图,我通过smoothScrollToPosition函数滚动它。我想要一个监听器,它会在每次循环器视图滚动时触发,并在滚动时给我位置的值。例如,如果我设置为recyclerView.ssmoothScrollToPosition(15(,所以我希望侦听器在它滚动的每个位置都被触发,在这种情况下,它应该被触发,并给出0、1、2、3、4到15的结果。

如果您想获得当前位置,请在onScrollListener((中执行此操作

private var currentVisibleItemRecyclerView = -1
private var linearLayoutManager: LinearLayoutManager? = null

然后在onCreate()中声明布局管理器,将其设置为recyclerview并设置onScrollListener

linearLayoutManager = LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false)
recyclerView.setLayoutManager(linearLayoutManager)
recyclerView.addOnScrollListener(recyclerViewOnScrollListener)

where recyclerViewOnScrollListener

private val recyclerViewOnScrollListener: RecyclerView.OnScrollListener =
object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)

}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val visibleItemCount: Int = linearLayoutManager!!.getChildCount()
val totalItemCount: Int = linearLayoutManager!!.getItemCount()
val firstVisibleItemPosition: Int =
linearLayoutManager!!.findFirstVisibleItemPosition()
currentVisibleItemRecyclerView = firstVisibleItemPosition + visibleItemCount
Log.d(
" Position",
" currentVisibleItemRecyclerView  " + currentVisibleItemRecyclerView.toString()
)
}
}

最新更新