How to implement pagination of recyclerview that is within NestedScrollView?
I could get the solution setting OnScrollChangeListener in the nestedScrollView.
The field isLoading should be changed everytime you load the items, for example if you are using retrofit. You could set it as true before It start running and as false when you get the response or the failure.
The field isLastPage should be changed everytime you get items and check if this page was the last one.
I'm using kotlin.
private var isLoading = false
private var isLastPage = false
nestedScrollView.setOnScrollChangeListener { v: NestedScrollView?, scrollX: Int, scrollY: Int, oldScrollX: Int, oldScrollY: Int ->
val nestedScrollView = checkNotNull(v){
return@setOnScrollChangeListener
}
val lastChild = nestedScrollView.getChildAt(nestedScrollView.childCount - 1)
if (lastChild != null) {
if ((scrollY >= (lastChild.measuredHeight - nestedScrollView.measuredHeight)) && scrollY > oldScrollY && !isLoading && !isLastPage) {
//get more items
}
}
}
And of course you need to set the field isNestedScrollingEnabled as false
myRecyclerView.isNestedScrollingEnabled = false