there is a scroll end event for recyclerview?

Berroterán :

I have a recycler view and I want to capture the event when the user finishes scrolling; which I assume is when the user lifts his finger from the screen, I have tried the nItemTouchListener [onTouchEvent] event but I have not been successful, in fact the event does not fire, any ideas?

Thanks!

Rinat Suleimanov :

I've reached it using OnScrollListener:

    recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
            super.onScrollStateChanged(recyclerView, newState)
            if (newState == SCROLL_STATE_DRAGGING) {
                //do something when scroll
            } else {
                //do something when stop scroll
            }
        }
    })

Here is how I use it in my project, I've just created the extension function to hide and show Fab button:

fun RecyclerView.addFabListener(fab: FloatingActionButton) {
    this.addOnScrollListener(object : RecyclerView.OnScrollListener() {
        override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
            super.onScrollStateChanged(recyclerView, newState)
            if (newState == SCROLL_STATE_DRAGGING) {
                fab.hide()
            } else {
                fab.show()
            }
        }
    })
}

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=393556&siteId=1