package Ġedu . pokemon . i ut . tut ti dex . ui . pokemon list Ċ Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Fragment Navigator Extras Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġedu . pokemon . i ut . tut ti dex . R Ċ import Ġedu . pokemon . i ut . tut ti dex . common . recyclerview . Data Binding Adapter Ċ import Ġedu . pokemon . i ut . tut ti dex . common . recyclerview . Data Binding ViewHolder Ċ import Ġedu . pokemon . i ut . tut ti dex . ui . model . Pokemon Ċ Ċ class ĠPok em ons Adapter ( viewModel : ĠPokemon List ViewModel ?) Ġ: ĠData Binding Adapter < Pokemon , ĠPokemon List ViewModel >( Diff Callback (), viewModel ){ ĊĊĠĠĠ Ġclass ĠDiff Callback Ġ: ĠDiff Util . Item Callback < Pokemon >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠPokemon , Ġnew Item : ĠPokemon ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . number Ġ== Ġnew Item . number ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠPokemon , Ġnew Item : ĠPokemon ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( old Item . name Ġ== Ġnew Item . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold Item . imageUrl Ġ== Ġnew Item . imageUrl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold Item . image Sh iny Url Ġ== Ġnew Item . image Sh iny Url ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġold Item . is Capt ured Ġ== Ġnew Item . is Capt ured ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠData Binding ViewHolder < Pokemon , ĠPokemon List ViewModel >, Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bind ViewHolder ( holder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel ?. on Pokemon Clicked ( getItem ( holder . adapter Position )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextras Ġ= ĠFragment Navigator Extras ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . findViewById < ImageView >( R . id . iv _ pokemon _ logo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġholder . item View . context . getString ( R . string ._ transition ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . findViewById < ImageView >( R . id . iv _ pokemon _ logo _ Sh iny ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Ġholder . item View . context . getString ( R . string ._ transition _ Sh iny )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . find Nav Controller (). navigate ( Pokemon List Fragment Directions . action Pokemon List Fragment To Pokemon Detail Fragment ( getItem ( holder . adapter Position ). number ), extras ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ) Ġ= ĠR . layout . component _ pokemon _ line Ċ }