Skip to content

Instantly share code, notes, and snippets.

@GuilhE
Last active March 21, 2020 21:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GuilhE/5b5733f2886ed9afa938fddfaab82767 to your computer and use it in GitHub Desktop.
Save GuilhE/5b5733f2886ed9afa938fddfaab82767 to your computer and use it in GitHub Desktop.
Helper listener class to implement pagination
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@Suppress("unused")
abstract class EndlessRecyclerOnScrollListener(
manager: LinearLayoutManager
) : RecyclerView.OnScrollListener() {
private var layoutManager: LinearLayoutManager = manager
abstract fun onLoadMore(lastVisibleIndex: Int)
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
val firstVisibleItemIndex: Int = layoutManager.findFirstVisibleItemPosition()
val visibleItemCount: Int = layoutManager.childCount
val totalItemCount: Int = layoutManager.itemCount
val delta = if (layoutManager.orientation == LinearLayoutManager.HORIZONTAL) dx else dy
val startToEnd: Boolean = !layoutManager.reverseLayout
if ((if (startToEnd) delta > 0 else delta < 0) && firstVisibleItemIndex + visibleItemCount >= totalItemCount) {
onLoadMore(layoutManager.findLastVisibleItemPosition())
}
}
}
@GuilhE
Copy link
Author

GuilhE commented Aug 31, 2019

Same use as in here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment