package Ġcom . gil ka . sc ub are dd it . custom Ċ Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ Ċ class ĠLoad More Scroll Listener ( private Ġval Ġlistener : ĠOn Load More Needed Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Manager : ĠLinearLayoutManager ) Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĊĠĠĠ Ġinterface ĠOn Load More Needed Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠonLoad More Needed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠisLoading Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġvar Ġloaded So Far Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġtotal Items Count Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġfirst Visible Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġvisible Items Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġthreshold Ġ= Ġ 5 ĊĊĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ<= Ġ 0 ) Ġreturn Ġ// Ġno Ġchange ĊĊĠĠĠĠĠĠĠ Ġtotal Items Count Ġ= Ġlayout Manager . item Count ĊĠĠĠĠĠĠĠ Ġvisible Items Count Ġ= Ġre cyclerView . child Count ĊĠĠĠĠĠĠĠ Ġfirst Visible Ġ= Ġlayout Manager . findFirst Visible Item Position () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total Items Count Ġ> Ġloaded So Far ) Ġ{ Ġ// Ġloading Ġdone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloaded So Far Ġ= Ġtotal Items Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( total Items Count Ġ- Ġvisible Items Count ) Ġ<= Ġ( first Visible Ġ+ Ġthreshold )) Ġ{ Ġ// Ġneed Ġto Ġload Ġmore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Load More Needed () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }