package Ġ{{ packageName }}. utils Ċ Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ Ċ /** Ċ Ġ* ĠEnd less Ġscroll Ġlistener Ġfor ĠRecyclerView Ċ Ġ*/ Ċ abstract Ġclass ĠEnd less Recycler On Scroll Listener Ġprotected Ġconstructor ( private Ġval Ġm Linear LayoutManager : ĠLinearLayoutManager ) Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġprevious Total Ġ= Ġ 0 Ġ// ĠThe Ġtotal Ġnumber Ġof Ġitems Ġin Ġthe Ġdataset Ġafter Ġthe Ġlast Ġload ĊĠĠĠ Ġprivate Ġvar Ġloading Ġ= Ġtrue Ġ// ĠTrue Ġif Ġwe Ġare Ġstill Ġwaiting Ġfor Ġthe Ġlast Ġset Ġof Ġdata Ġto Ġload . ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Offset Ġ= Ġ 0 ĊĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĊĠĠĠĠĠĠĠ Ġval Ġvisible ItemCount Ġ= Ġre cyclerView . child Count ĊĠĠĠĠĠĠĠ Ġval Ġtotal ItemCount Ġ= Ġm Linear LayoutManager . item Count ĊĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Ġ= Ġm Linear LayoutManager . findFirst Visible Item Position () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( total ItemCount Ġ> Ġprevious Total ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Total Ġ= Ġtotal ItemCount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġvisible Threshold Ġ= Ġ 7 ĊĠĠĠĠĠĠĠ Ġif Ġ(! loading Ġ&& Ġtotal ItemCount Ġ- Ġvisible ItemCount Ġ<= Ġfirst Visible Item Ġ+ Ġvisible Threshold Ġ&& Ġm Linear LayoutManager . findFirst Comp let ely Visible Item Position () Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠEnd Ġhas Ġbeen Ġreached ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġsomething ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Offset Ġ+= Ġ 1 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠonLoad More ( current Offset ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġabstract Ġfun ĠonLoad More ( current Offset : ĠInt ) ĊĊĠĠĠ Ġfun Ġreset ( previous Total : ĠInt , Ġloading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . previous Total Ġ= Ġprevious Total ĊĠĠĠĠĠĠĠ Ġthis . loading Ġ= Ġloading ĊĠĠĠĠĠĠĠ Ġthis . current Offset Ġ= Ġ 0 ĊĠĠĠ Ġ} Ċ }