package Ġcom . mobile systems . feed me . ui . dashboard Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . mobile systems . feed me . R Ċ import Ġcom . mobile systems . feed me . databinding . Dashboard Exp iring Product Item Binding Ċ import Ġcom . mobile systems . feed me . ui . common . utils . getTime Diff Ċ import Ġcom . mobile systems . feed me . domain . model . Product Ċ Ċ class ĠDashboard Exp iring Product ListAdapter Ġ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval ĠdataSet : ĠList < Product > ?, ĊĠĠĠ Ġprivate Ġval Ġitem ClickListener : ĠExp iring Products Adapter ClickListener Ċ ) Ġ: ĠRecyclerView . Adapter < Dashboard Exp iring Product ListAdapter . Product ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠimageUrl : ĠString ĊĊĠĠĠ Ġ// view Ġbinding ĊĠĠĠ Ġprivate Ġvar Ġ_ item Binding : ĠDashboard Exp iring Product Item Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġitem Binding Ġget () Ġ= Ġ_ item Binding !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvide Ġa Ġreference Ġto Ġthe Ġtype Ġof Ġviews Ġthat Ġyou Ġare Ġusing ĊĠĠĠĠ Ġ* Ġ( custom ĠViewHolder ). ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠProduct ViewHolder ( item Binding : ĠDashboard Exp iring Product Item Binding ) Ġ: ĠRecyclerView . ViewHolder ( item Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcard View : ĠCard View Ġ= Ġitem Binding . exp iring Product Item Card View ĊĠĠĠĠĠĠĠ Ġval Ġproduct Name TextView : ĠTextView Ġ= Ġitem Binding . text Exp iring ProductName ĊĠĠĠĠĠĠĠ Ġval Ġproduct Expiration Date : ĠTextView Ġ= Ġitem Binding . text Exp iring Product Date ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinitialize Ġclick listener Ġand Ġpass Ġclicked Ġproduct Ġfor Ġlist item Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard View . setOnClickListener { Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Set Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener . pass Data ( data Set [ binding Adapter Position ], Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠExp iring Products Adapter ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġpass Data ( product : ĠProduct , ĠitemView : ĠView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠProduct ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġview Ġwhich Ġdefines Ġthe ĠUI Ġof Ġthe Ġlist Ġitem ĊĠĠĠĠĠĠĠ Ġ_ item Binding Ġ= ĠDashboard Exp iring Product Item Binding . inflate ( LayoutInflater . from ( parent . context ), Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠProduct ViewHolder ( item Binding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( product ViewHolder : ĠProduct ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Set Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġget Ġselected Ġproduct ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Item Ġ= ĠdataSet [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġpass Ġvalues Ġto Ġview Ġitems ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageUrl Ġ= Ġcurrent Item . product Image ?. imageUrl Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// cdn . pix ab ay . com / photo / 2 0 1 7 / 0 6 / 0 6 / 2 2 / 3 7 / ital ian - cu is ine - 2 3 7 8 7 2 9 _ 9 6 0 _ 7 2 0 . jpg " // Ġdummy Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCalculate Ġdifference Ġbetween Ġcurrent Ġdate Ġto Ġexpiration Ġdate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Days Ġ= ĠgetTime Diff ( currentItem . expiration Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( exp Days Ġ<= Ġ 3 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct ViewHolder . product Expiration Date . setTextColor ( Context Compat . getColor ( context , ĠR . color . red _ 2 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct ViewHolder . product Expiration Date . setTextColor ( Context Compat . getColor ( context , ĠR . color . black )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexp Text : ĠString Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexp Days Ġ<= Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Today " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexp Days Ġ== Ġ 1 L Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ exp Days Ġday " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ exp Days Ġdays " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct ViewHolder . product Expiration Date . text Ġ= Ġexp Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduct ViewHolder . product Name TextView . text Ġ= Ġcurrent Item . product Name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠdataSet ?. size Ġ?: Ġ 0 ĊĠĠĠ Ġ} Ċ }