package Ġcom . hi . d hl . pokemon . ui . main Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġcom . hi . d hl . jd atab ind ing . Data Binding ViewHolder Ċ import Ġcom . hi . d hl . jd atab ind ing . d ow ith Try Ċ import Ġcom . hi . d hl . pokemon . R Ċ import Ġcom . hi . d hl . pokemon . databinding . Re cycle Item Pokemon Binding Ċ import Ġcom . hi . d hl . pokemon . model . Pokemon Item Model Ċ Ċ /** Ċ Ġ* Ġ< pre > Ċ Ġ* ĠĠĠĠ Ġauthor : Ġd hl Ċ Ġ* ĠĠĠĠ Ġdate Ġ Ġ: Ġ 2 0 2 0 / 7 / 1 1 Ċ Ġ* ĠĠĠĠ Ġdesc Ġ Ġ: Ċ Ġ* Ġ</ pre > Ċ Ġ*/ Ċ Ċ class ĠPokemon Adapter Ġ: ĊĠĠĠ ĠP aging Data Adapter < Pokemon Item Model , ĠPokemon ViewModel >( Pokemon Item Model . diff Callback ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPokemon ViewModel , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdow ith Try Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind Data ( data , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPokemon ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinf late View ( parent , ĠR . layout . recycle _ item _ pokemon ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPokemon ViewModel ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinf late View ( view Group : ĠViewGroup , Ġ@ Layout Res Ġview Type : ĠInt ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( view Group . context ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlayout Inflater . inflate ( view Type , Ġview Group , Ġfalse ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠPokemon ViewModel ( view : ĠView ) Ġ: ĠData Binding ViewHolder < Pokemon Item Model >( view ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Binding : ĠRe cycle Item Pokemon Binding Ġby ĠviewHolder Binding ( view ) ĊĊĠĠĠ Ġoverride Ġfun Ġbind Data ( data : ĠPokemon Item Model , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Binding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . id Ġ= Ġ"# ${ position Ġ+ Ġ 1 }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpokemon Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }