package Ġcom . ga ur av . pokemon . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . recyclerview . widget . Async List Differ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . ga ur av . pokemon . R Ċ import Ġcom . ga ur av . pokemon . data . model . F oe Ċ import Ġcom . ga ur av . pokemon . databinding . Item Friend Binding Ċ import Ġcom . ga ur av . pokemon . adapter . Fo es ListAdapter . Fo es ViewHolder Ċ import Ġcom . ga ur av . pokemon . data . model . Pokemon Location Info Ċ import Ġcom . ga ur av . pokemon . utils . Constants Ċ import Ġcom . ga ur av . pokemon . utils . Constants . PO KE MON _ CAPTURE D Ċ import Ġcom . ga ur av . pokemon . utils . Constants . PO KE MON _ CAPTURE D _ BY _ OTHER Ċ import Ġcom . ga ur av . pokemon . utils . General Utils Ċ import Ġcom . ga ur av . pokemon . utils . get Dominant Color Ċ import Ġcom . ga ur av . pokemon . utils . get Formatted DateTime Ċ Ċ class ĠF oes ListAdapter ( val Ġcontext : ĠFragment Activity ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Fo es ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinner Ġclass ĠF oes ViewHolder ( val Ġbinding : ĠItem Friend Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDiff Util Ġimplementation Ġfor Ġbetter Ġrendering Ġof ĠRecyclerView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġdiffer Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < F oe >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠF oe , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠF oe ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . name Ġ== Ġnew Item . name ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠF oe , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠF oe ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdiffer Ġ= ĠAsync List Differ ( this , Ġdiffer Callback ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRecyclerView ĠAdapter Ġcallback Ġmethods ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdiffer . current List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠF oes ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem Friend Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), Ġparent , Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠF oes ViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠF oes ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġf oe Ġ= Ġdiffer . current List [ position ] ĊĊĠĠĠĠĠĠĠ Ġval Ġpokemon Ġ= Ġf oe . pokemon ĊĊĠĠĠĠĠĠĠ Ġholder . binding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Name . text Ġ= Ġf oe . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Capt ured At . text Ġ= Ġget Formatted DateTime ( pokemon . captured At ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠimageUrl Ġ= ĠGeneral Utils . get Pokemon ImageUrl ( pokemon . id ) Ċ Ċ /* ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( iv Pokemon ) Ċ */ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpokemon Location Info Ġ= ĠPokemon Location Info ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpokemon . captured At , Ġ 0 . 0 0 , Ġ 0 . 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpokemon . id , Ġpokemon . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ Ċ /* ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcl Main . background Ġ= ĠContext Compat . get Drawable ( context , ĠR . color . very Light Red ) Ċ */ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGeneral Utils . intent Pokemon Details ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġpokemon Location Info , ĠPO KE MON _ CAPTURE D _ BY _ OTHER , Ġf oe . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . get Dominant Color ( imageUrl , iv Pokemon ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcl Main . set BackgroundColor ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }