package Ġcom . example . wall paper application . presentation . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . wall paper application . My Application Ċ import Ġcom . example . wall paper application . R Ċ import Ġcom . example . wall paper application . data . model . Wall paper Images Ċ import Ġcom . example . wall paper application . presentation . adapter . Main Adapter Ċ import Ġcom . example . wall paper application . presentation . main . MainActivity Ċ import Ġcom . example . wall paper application . presentation . utility . is Network Available Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main . view .* Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠMain Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain Fragment Component : ĠMain Fragment Component ĊĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠMain Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠMain Fragment ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgrid LayoutManager : ĠGrid LayoutManager ĊĠĠĠ Ġprivate Ġvar Ġpage Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġlimit Ġ= Ġ 2 6 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview 1 : ĠView ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmain Fragment Component Ġ= Ġ( activity ?. application Ġas ĠMy Application ). app Component . main Fragment Component (). create () ĊĠĠĠĠĠĠĠ Ġmain Fragment Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġview 1 Ġ= Ġinflater . inflate ( R . layout . fragment _ main , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit () ĊĠĠĠĠĠĠĠ Ġreturn Ġview 1 ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Adapter () ĊĠĠĠĠĠĠĠ Ġsetup ClickListener () ĊĠĠĠĠĠĠĠ Ġattach Observer () ĊĠĠĠĠĠĠĠ Ġget Wall paper Images () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠMain Adapter ( require Context ()) ĊĠĠĠĠĠĠĠ Ġview 1 . rv . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġgrid LayoutManager Ġ= ĠGrid LayoutManager ( context , Ġ 2 , ĠGrid LayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġview 1 . rv . layout Manager Ġ= Ġgrid LayoutManager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Wall paper Images () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress () ĊĠĠĠĠĠĠĠ ĠviewModel . get Wall paper Images ( MainActivity . category . toLowerCase ( Locale . ROOT ), Ġpage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattach Observer () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . wall paper Images . observe Fore ver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" data ", Ġit . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter ?. addData ( it Ġas ĠArrayList < Wall paper Images >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( activity , Ġ" Error Ġgetting Ġdata ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ClickListener () Ġ{ ĊĠĠĠĠĠĠĠ Ġview 1 . rv . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" MainActivity ", Ġ" on Scroll Change : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context ?. is Network Available () Ġ== Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Internet Ġis Ġnot Ġconnected ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible ItemCount Ġ= Ġgrid LayoutManager . child Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpast Visible Item Ġ= Ġgrid LayoutManager . findFirst Visible Item Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtotal Ġ= Ġadapter ?. item Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ< Ġlimit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( visible ItemCount Ġ+ Ġpast Visible Item Ġ>= Ġtotal !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" page ", Ġpage . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Wall paper Images () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Loaded Ġentire Ġdata ", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Sc rolled ( re cyclerView , Ġdx , Ġdy ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġview 1 . progress Bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġview 1 . progress Bar . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ }