package Ġcom . ale xy u ze fo v ich . sample . presentation . view . adapter . items Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . graphics . Color Utils Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . ale xy u ze fo v ich . sample . data . Data Listener Ċ import Ġcom . ale xy u ze fo v ich . sample . databinding . Item Food Category Binding Ċ import Ġcom . ale xy u ze fo v ich . sample . data . model . Food Category Ċ import Ġcom . ale xy u ze fo v ich . sample . util . glide Ċ import Ġcom . ale xy u ze fo v ich . section izer . Section Adapter Ċ Ċ class ĠFood Category Adapter Ġ: ĊĠĠĠ ĠList Adapter < Food Category , ĠFood Category Adapter . ViewHolder >( Diff Util Callback ), ĊĠĠĠ ĠSection Adapter < Food Category >, ĊĠĠĠ ĠData Listener < Food Category > Ċ { ĊĊĠĠĠ Ġcompanion Ġobject ĠDiff Util Callback Ġ: ĠDiff Util . Item Callback < Food Category >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠFood Category , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠFood Category ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ= Ġold Item . id Ġ== Ġnew Item . id ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold Item : ĠFood Category , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Item : ĠFood Category ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ= Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠItem Food Category Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( getItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Latest Snapshot (): ĠList < Food Category > Ġ= Ġcurrent List ĊĊĠĠĠ Ġoverride Ġfun Ġrestore From Snapshot ( snapshot : ĠList < Food Category >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubmit List ( snapshot ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Data Ready ( data : ĠList < Food Category >) Ġ{ ĊĠĠĠĠĠĠĠ Ġsubmit List ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠItem Food Category Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( food Category : ĠFood Category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Uri Ġ= ĠUri . parse ( food Category . icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprimary Color Ġ= ĠColor . parse Color ( food Category . color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecondary Color Ġ= ĠColor Utils . blend ARGB ( primary Color , ĠColor . WHITE , Ġ 0 . 7 5 f ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . set Card BackgroundColor ( secondary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġg lide ( icon Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Color Filter ( primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġfood Category . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( primary Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }