package Ġcom . example . android . wall papers . categories Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . St agger ed Grid LayoutManager Ċ import Ġcom . example . android . wall papers . R Ċ import Ġcom . example . android . wall papers . R . id . categories Ċ import Ġcom . example . android . wall papers . data . Category Ċ import Ġcom . example . android . wall papers . data . Wall paper Ċ import Ġcom . example . android . wall papers . item . Categor ie Item Ċ import Ġcom . example . android . wall papers . item . Wall paper Item Ċ import Ġcom . example . android . wall papers . utilities . Constants Ċ import Ġcom . example . android . wall papers . utilities . Injector Utils Ċ import Ġcom . x wr ay . group ie . Group Adapter Ċ import Ġcom . x wr ay . group ie . ViewHolder Ċ import Ġkotlinx . android . synt hetic . main . activity _ category .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ categories .* Ċ Ċ class ĠCategory Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġcategory : ĠCategory ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġgroup Adapter : ĠGroup Adapter < ViewHolder > ĊĠĠĠ Ġprivate Ġvar Ġdata : ĠList < Wall paper >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ category ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( main _ toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġgroup Adapter Ġ= ĠGroup Adapter < ViewHolder >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspan Count Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġcategory Ġ= Ġget Intent Data () ĊĠĠĠĠĠĠĠ Ġinit UI () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġ// Ab ly Ġthe Ġspan Ġcount Ġand Ġthe Ġadapter Ġto Ġthe Ġre cycler view ĊĠĠĠĠĠĠĠ Ġcategory _ wall paper _ recyclerview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , ĠSt agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġgroup Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit UI () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( category Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcategory ?. title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġthe Ġview model Ġfactory ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠInject or Utils . provide Categories ViewModel Factory () ĊĊĠĠĠĠĠĠĠ Ġ// Getting Ġthe Ġview model ĊĠĠĠĠĠĠĠ Ġval ĠviewModel Ġ= ĠViewModel Providers . of ( this , Ġfactory ). get ( Categor ie ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . load Wall papers ( title !! ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . getC ategor ie Wall papers (). observe ( this , ĠObserver Ġ{ wall papers Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġwall papers ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Adapter () ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Adapter () Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Adapter . clear () ĊĠĠĠĠĠĠĠ Ġdata !!. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Adapter . add ( Wall paper Item ( it , Ġthis )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Intent Data (): ĠCategory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġintent . get Parcelable Extra < Category >( Constants . CATEGORY ) ĊĠĠĠ Ġ} ĊĊĊ Ċ } Ċ