Reputation: 131
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!
Upvotes: 0
Views: 173
Reputation: 517
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()
}
}
})
}
Upvotes: 2