package Ġbr . com . raf an eres li ma . mar velo ush ero es . presentation . fragments . list Characters Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġbr . com . raf an eres li ma . mar velo ush ero es . R Ċ import Ġbr . com . raf an eres li ma . mar velo ush ero es . presentation . activities . MainActivity Ċ import Ġbr . com . raf an eres li ma . mar velo ush ero es . presentation . adapters . List Characters Adapter Ċ import Ġbr . com . raf an eres li ma . mar velo ush ero es . presentation . components . Custom Alert View Ċ import Ġbr . com . raf an eres li ma . mar velo ush ero es . presentation . components . Custom Loading Ċ import Ġkotlinx . android . synt hetic . main . list _ characters _ fragment .* ĊĊ Ċ class ĠList Characters Fragment (): ĠFragment (), ĠCustom Alert View . Custom Dialog Callback Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( click Listener : ĠMainActivity ) Ġ= ĠList Characters Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠList Characters ViewModel ĊĠĠĠ Ġprivate Ġvar Ġalert : ĠCustom Alert View ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . list _ characters _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠCustom Loading . getInstance ( activity ). show () ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( List Characters ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ ĠviewModel . get Characters () ĊĠĠĠĠĠĠĠ Ġconfigure UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Characters RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġlist Characters RecyclerView . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scroll StateChanged ( re cyclerView : ĠRecyclerView , ĠnewState : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Scroll StateChanged ( re cyclerView , ĠnewState ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! re cyclerView . can Scroll Vert ically ( 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is Pagination ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . get Characters () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . get Observer Characters (). observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Characters RecyclerView . adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Loading . getInstance ( activity ). hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Characters RecyclerView . adapter Ġ= Ġcontext ?. let Ġ{ Ġcontext Ġ-> ĠList Characters Adapter ( context , Ġit . data ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCustom Loading . getInstance ( activity ). hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( list Characters RecyclerView . adapter Ġas ĠList Characters Adapter ). load More Data ( it . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . get Observer Error (). observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert Ġ= ĠCustom Alert View ( activity , Ġnull , Ġcontext ?. getString ( R . string . error ), Ġit . message , Ġnull , Ġcontext ?. getString ( R . string . accept ), Ġthis , Ġ 0 , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalert ?. show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcell Body Lists Detail . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( viewModel . is Search ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . clear Search () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . characters ?. data ?. let Ġ{ Ġit 1 Ġ-> Ġ( list Characters RecyclerView . adapter Ġas ĠList Characters Adapter ). load More Data ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Left Button ( tag : ĠInt ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Right Button ( tag : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalert ?. hide () ĊĠĠĠĠĠĠĠ Ġalert Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }