package Ġfr . o 8 0 . everything is fine . presentation . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġfr . o 8 0 . everything is fine . R Ċ import Ġfr . o 8 0 . everything is fine . data . model . Pokemon Ċ import Ġfr . o 8 0 . everything is fine . presentation . view model . Details ViewModel Ċ Ċ private Ġconst Ġval ĠARG _ PO KE MON _ ID Ġ= Ġ" ARG _ PO KE MON _ ID " Ċ Ċ @ Android EntryPoint Ċ class ĠDetails Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpokemon Id : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġprivate Ġvar ĠviewHolder : ĠViewHolder ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠDetails ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpokemon Id Ġ= Ġit . getInt ( ARG _ PO KE MON _ ID ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . init ( pokemon Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ details , Ġcontainer , Ġfalse ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder Ġ= ĠViewHolder ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . pokemon . observe ( view Lifecycle Owner ) Ġ{ Ġ( pokemon , ĠisIn Po ke dex ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder ?. bind ( pokemon , ĠisIn Po ke dex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ name ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpoke ball : ĠImageView Ġ= Ġview . findViewById ( R . id . iv _ poke ball ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhealth : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ hp _ value ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġforce : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ attack _ value ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprotection : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ defense _ value ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( pokemon : ĠPokemon , ĠisIn Po ke dex : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġpokemon . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhealth . text Ġ= Ġpokemon . base . hp . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġforce . text Ġ= Ġpokemon . base . attack . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprotection . text Ġ= Ġpokemon . base . defense . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġpoke ball . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isIn Po ke dex ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Pokemon Ġis Ġin Ġpoke dex " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ poke ball _ caught ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Pokemon Ġnot Ġyet Ġcaught " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Image Resource ( R . drawable . ic _ poke ball _ empty ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . on Po ke ball Clicked ( isIn Po ke dex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( pokemon Id : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDetails Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( ARG _ PO KE MON _ ID , Ġpokemon Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ