Hello folks I'm trying to handle an onScrolled
event in my recyclerView
, that's inside a NestedScrollView
.
So far, I have found setOnScrollChangeListener
, however this method is API 23, and I'm targeting API 21, any idea to handle this issue back in API 21?
I think you are using setOnChangeScrollListener with View.OnScrollChangeListener. Please use NestedScrollView.OnScrollChangeListener like that:
scvProduct.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView nestedScrollView,int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
Log.e("ProductFragment","position button " + topPositionButton + " scrollY " + scrollY);
if(scrollY > oldScrollY){
Log.e("ProductFragment","down");
}
else{
Log.e("ProductFragment","up");
}
}
});
After some time I got an idea, I've stopped listening to scroll on RecyclerView
and started listening to NestedScrollView
onScroll
event.
I managed to make my loadOnDemand recyclerView
using this snippet
nsv_posts_timeline.setOnScrollChangeListener(
NestedScrollView.OnScrollChangeListener {
_, scrollX, scrollY, _, oldScrollY ->
if(scrollY > oldScrollY){
val totalItens = timelineAdapter.itemCount
val currentView = rv_timeline.findChildViewUnder(scrollX.toFloat(), scrollY.toFloat())
val childPosition = rv_timeline.getChildAdapterPosition(currentView)
if((totalItens/2) - (stepSize/2) <= childPosition && !isLoading){
isLoading = true
//skip , take
timelinePresenter.loadMore(totalItens, 5)
}
}
})
isLoading
is a class property that I change to false when my callback returns from server
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With