/** Ċ Ġ* ĠCopyright Ġ 2 0 1 7 , ĠJ os Ã© ĠNor berto ĠC uent as ĠTur po . Ċ Ġ* Ġ< p > Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ< p > Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ< p > Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . j ose c uent as . android _ exercise _ mvp _ recycler in recycler _ kotlin . ui . main Ċ Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . RecyclerView ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby Ġjc uent as Ġon Ġ 2 1 / 0 9 / 1 7 . Ċ Ġ*/ Ċ abstract Ġclass ĠPagination Scroll Listener Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġis Last Page Ġ= Ġfalse ĊĠĠĠ Ġvar ĠcurrentPage Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar ĠisLoading Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView ?, ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Scroll StateChanged ( re cyclerView , ĠnewState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView ?, Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠ Ġval Ġll m Ġ= Ġre cyclerView !!. layout Manager Ġas ĠLinearLayoutManager ĊĠĠĠĠĠĠĠ Ġval Ġvisible ItemCount Ġ= Ġll m . child Count ĊĠĠĠĠĠĠĠ Ġval Ġtotal ItemCount Ġ= Ġll m . item Count ĊĠĠĠĠĠĠĠ Ġval Ġfirst Visible Item Position Ġ= Ġll m . findFirst Visible Item Position () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! isLoading Ġ&& Ġ! is Last Page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible ItemCount Ġ+ Ġfirst Visible Item Position Ġ>= Ġtotal ItemCount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġfirst Visible Item Position Ġ>= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġtotal ItemCount Ġ>= ĠPAGE _ SIZE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Setup () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġload More Items ( currentPage : ĠInt ) ĊĊĠĠĠ Ġprivate Ġfun Ġinit Setup () Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġload More Items ( this . currentPage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Loading ( loading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġloading ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset Pagination () Ġ{ ĊĠĠĠĠĠĠĠ ĠcurrentPage Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġis Last Page Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlast Page () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Last Page Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPAGE _ SIZE Ġ= Ġ 1 0 ĊĠĠĠ Ġ} Ċ }