package Ġbr . com . stone . em eral d components android . activities Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġbr . com . stone . em eral d components . basic . recyclerview . Abstract Adapter Ċ import Ġbr . com . stone . em eral d components . basic . recyclerview . End less RecyclerView Manager Ċ import Ġbr . com . stone . em eral d components . extension . setUp Ċ import Ġbr . com . stone . em eral d components android . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ end less _ recycler .* Ċ import Ġkotlinx . android . synt hetic . main . item _ end less _ recycler . view .* Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠEnd less Recycler Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġend less RecyclerView Manager : ĠEnd less RecyclerView Manager ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" End less ĠRe cycler " ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ end less _ recycler ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . setUp ( emptyList < Int >(), Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( end less RecyclerView Manager . should Show Loading ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ end less _ recycler ĊĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠtextView ?. text Ġ= Ġit . toString () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġend less RecyclerView Manager Ġ= ĠEnd less RecyclerView Manager ( re cyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Data ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġupdate Data ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Data ( page : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġload Data ( page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Last Page Ġ= Ġpage Ġ>= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend less RecyclerView Manager . add Items ( it , Ġre cyclerView . adapter Ġas ĠAbstract Adapter < Int >, Ġis Last Page ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Data ( page : ĠInt , Ġon Finished : Ġ( List < Int >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" START ĠLO ADING ĠPAGE : Ġ$ page ") ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Items Ġ= Ġwhen Ġ( page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ( 1 .. 1 0 ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ( 1 1 .. 2 0 ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ( 2 1 .. 2 7 ). toList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" FINISHED ĠLOAD IND ĠPAGE : Ġ$ page ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished ( new Items ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ