package Ġcom . mobile systems . feed me . ui . recipe detail Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . content . res . AppCompat Resources Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . graphics . drawable . Drawable Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . mobile systems . feed me . R Ċ import Ġcom . mobile systems . feed me . databinding . Recipe Ingredient Item Binding Ċ import Ġcom . mobile systems . feed me . domain . model . Product Ċ import Ġcom . mobile systems . feed me . ui . common . utils . abbre vi ate Unit String Ċ import Ġcom . mobile systems . feed me . ui . recipes . Shared Recipes ViewModel Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* ĠTutorial : Ġhttps :// developer . android . com / guide / topics / ui / layout / recyclerview Ċ Ġ* ĠĠĠĠĠĠĠĠĠ Ġhttps :// developers bre ach . com / navigation - with - architecture - components - android / Ċ Ġ*/ Ċ class ĠRecipe Ingredient ListAdapter ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġshared ViewModel : ĠShared Recipes ViewModel , ĊĠĠĠ Ġprivate Ġval ĠdataSet : ĠList < Product >? Ċ ) Ġ: ĠRecyclerView . Adapter < Recipe Ingredient ListAdapter . Ingredient ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ item Binding : ĠRecipe Ingredient Item Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġitem Binding Ġget () Ġ= Ġ_ item Binding !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvide Ġa Ġreference Ġto Ġthe Ġtype Ġof Ġviews Ġthat Ġare Ġused ĊĠĠĠĠ Ġ* Ġ( custom ĠViewHolder ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠIng redient ViewHolder ( item Binding : ĠRecipe Ingredient Item Binding ) Ġ: ĠRecyclerView . ViewHolder ( item Binding . root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġingredient Name TextView : ĠTextView Ġ= Ġitem Binding . text Ingredient Name ĊĠĠĠĠĠĠĠ Ġval Ġingredient Quantity TextView : ĠTextView Ġ= Ġitem Binding . text Ingredient Quantity ĊĠĠĠĠĠĠĠ Ġval Ġingredient Available Icon : ĠImageView Ġ= Ġitem Binding . ingredient Available Icon ĊĠĠĠĠĠĠĠ Ġval Ġingredient Available TextView : ĠTextView Ġ= Ġitem Binding . text Ingredient Availability ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠIng redient ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġview Ġwhich Ġdefines Ġthe ĠUI Ġof Ġthe Ġlist Ġitem ĊĠĠĠĠĠĠĠ Ġ_ item Binding Ġ= ĠRecipe Ingredient Item Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠIng redient ViewHolder ( item Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠIng redient ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( data Set Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġselected Ġproduct ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Item Ġ= ĠdataSet [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( shared ViewModel . is Product Available ( shared ViewModel . available Ing redients . value , Ġcurrent Item )){ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġcolour Ġfor Ġf ridge Ġicon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Green Ġ= ĠContext Compat . getColor ( context , ĠR . color . green _ 5 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available Icon . setImage Resource ( R . drawable . ic _ f ridge icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available Icon . setColor Filter ( color Green ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available Icon . visibility Ġ= ĠImageView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available TextView . setTextColor ( color Green ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available TextView . text Ġ= Ġ"" Ġ// context . getString ( R . string . Available ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Red Ġ= ĠContext Compat . getColor ( context , ĠR . color . red _ 2 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available Icon . setImage Resource ( R . drawable . ic _ baseline _ shopping _ bag _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available Icon . setColor Filter ( color Red ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available TextView . setTextColor ( color Red ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Available TextView . text Ġ= Ġ"" Ġ// context . getString ( R . string . Not Available ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpass Ġvalues Ġto Ġview Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġab br Unit Ġ= Ġabbre vi ate Unit String ( currentItem . quantity ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Name TextView . text Ġ= Ġcurrent Item . product Name ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . ingredient Quantity TextView . text Ġ= Ġab br Unit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠdataSet ?. size Ġ?: Ġ 0 ĊĠĠĠ Ġ} Ċ }