package Ġcom . cost ular . mar vel hero es . presentation . hero es list Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Default Item Animator Ċ import Ġandroid . support . v 7 . widget . Grid LayoutManager Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . View Ċ import Ġcom . cost ular . mar vel hero es . R Ċ import Ġcom . cost ular . mar vel hero es . R . id . hero es List Loading _ mv vm Ċ import Ġcom . cost ular . mar vel hero es . R . id . hero es List Recycler _ mv vm Ċ // import Ġcom . cost ular . mar vel hero es . di . components . D agger Get Mar vel Hero es List Component Ċ import Ġcom . cost ular . mar vel hero es . domain . model . Mar vel Hero Entity Ċ import Ġcom . cost ular . mar vel hero es . presentation . hero e detail . Mar vel Hero Detail Activity MV VM Ċ import Ġcom . cost ular . mar vel hero es . presentation . util . Navigator Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ main _ mv vm .* Ċ Ċ class ĠHero es List Activity MV VM Ġ: ĠAppCompatActivity (){ ĊĊĠĠĠ Ġlateinit Ġvar Ġhero es List ViewModel : ĠHero es List ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġadapter Ġ: Ġ ĠHero es ListAdapter MV VM ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// inject () ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main _ mv vm ) ĊĠĠĠĠĠĠĠ ĠsetUp Recycler () ĊĠĠĠĠĠĠĠ ĠsetUp ViewModel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Recycler (){ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠHero es ListAdapter MV VM { Ġhero , Ġimage Ġ-> Ġgo To Hero Detail ( hero , Ġimage ) Ġ} ĊĠĠĠĠĠĠĠ Ġhero es List Recycler _ mv vm . layout Manager Ġ= ĠGrid LayoutManager ( this , 2 , Grid LayoutManager . VERTICAL , false ) ĊĠĠĠĠĠĠĠ Ġhero es List Recycler _ mv vm . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġhero es List Recycler _ mv vm . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun ĠsetUp ViewModel (){ ĊĠĠĠĠĠĠĠ Ġhero es List ViewModel Ġ= ĠViewModel Providers . of ( this ). get ( Hero es List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġbind Events () ĊĠĠĠĠĠĠĠ Ġhero es List ViewModel . load Hero es List () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġbind Events (){ ĊĊĠĠĠĠĠĠĠ Ġhero es List ViewModel . isLoading State . observe ( this , ĠObserver Ġ{ ĠisLoading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Jet Pack ĊĠĠĠĠĠĠĠ Ġhero es List ViewModel . hero es List State . observe ( this , Observer { Ġhero es List Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhero es List ?. let { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Hero es List Loaded ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Rx Java ĊĠĠĠĠĠĠĠ Ġ// hero es List ViewModel . hero es List State . subscribe { Ġ Ġon Hero es List Loaded ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Hero es List Loaded ( hero es List : ĠList < Mar vel Hero Entity > ){ ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( hero es List ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading ( isLoading Ġ: ĠBoolean ){ ĊĠĠĠĠĠĠĠ Ġhero es List Loading _ mv vm . visibility Ġ= Ġif Ġ( isLoading ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgo To Hero Detail ( hero : ĠMar vel Hero Entity , Ġimage : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNavigator . goTo Hero Detail MV VM ( this , Ġhero , Ġimage ) ĊĠĠĠĠĠĠĠ Ġ// In ici amos Ġla Ġactivity Ġde Ġdetail Ġsin Ġnavigator ĊĠĠĠĠĠĠ Ġ/* Ġval Ġintent Ġ= ĠIntent ( this , Mar vel Hero Detail Activity MV VM :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Mar vel Hero Detail Activity MV VM . PARAM _ HER O _ ID , hero . name )// De be o Ġpas ar Ġel Ġid , Ġpero Ġpor Ġel Ġmoment o Ġel Ġnombre ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠsetUp ViewModel () ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ