package Ġy app . android 1 . deli buddy . ui . home . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġy app . android 1 . deli buddy . R Ċ import Ġy app . android 1 . deli buddy . databinding . Include Layout Party Item Binding Ċ import Ġy app . android 1 . deli buddy . model . Party Ċ import Ġy app . android 1 . deli buddy . util . dp To Px Ċ Ċ class ĠPart ies Adapter ( private Ġval ĠonClick : Ġ( Include Layout Party Item Binding , ĠParty ) Ġ-> ĠUnit ) Ġ: ĊĠĠĠ ĠList Adapter < Party , ĠPart ies Adapter . Part ies ViewHolder >( Part ies Diff Callback ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAR TY _ STATUS _ ON _ ORDER Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAR TY _ STATUS _ COMPLETED Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠPart ies ViewHolder ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġbinding : ĠInclude Layout Party Item Binding , ĊĠĠĠĠĠĠĠ Ġval ĠonClick : Ġ( Include Layout Party Item Binding , ĠParty ) Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġbinding . root . context ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcurrent Party : ĠParty ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Item . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Party ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( binding , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( party : ĠParty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Party Ġ= Ġparty ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( party . category . icon Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( binding . food Category Image ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Location . text Ġ= Ġparty . place Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Title . text Ġ= Ġparty . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Scheduled Time . text Ġ= Ġparty . order Time ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Member Icon ( party . target User Count , Ġparty . currentUser Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . member Count . text Ġ= Ġ"${ party . currentUser Count } Ġ/ Ġ${ party . target User Count }" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Ui Based Status ( party ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Member Icon ( target User Count : ĠInt , ĠcurrentUser Count : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . member Icon . removeAll Views In Layout () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġparams Ġ= ĠLinearLayout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewGroup . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams . set Margins ( 0 , Ġ 0 , Ġcontext . dp To Px ( 8 ). toInt (), Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Member Icon ( context , Ġparams , ĠR . drawable . icon _ party _ member _ presence , ĠcurrentUser Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmake Member Icon ( context , Ġparams , ĠR . drawable . icon _ party _ member _ abs ence , Ġtarget User Count Ġ- ĠcurrentUser Count ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġmake Member Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams : ĠLinearLayout . LayoutParams , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Id : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( index Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . setImage Drawable ( Context Compat . get Drawable ( context , Ġdrawable Id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . layout Params Ġ= Ġparams ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . member Icon . addView ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Ui Based Status ( party : ĠParty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( party ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Statuses [ PAR TY _ STATUS _ ON _ ORDER ] Ġ-> Ġset Ordering Status Label () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Statuses [ PAR TY _ STATUS _ COMPLETED ] Ġ-> Ġset Disabled UI () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Ordering Status Label () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . ordering Status Label . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Title . max E ms Ġ= Ġ 9 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġset Disabled UI () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Item . alpha Ġ= Ġ 0 . 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . party Item . set BackgroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . block _ space _ grey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . grey Scale View . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Party Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠPart ies ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠInclude Layout Party Item Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠPart ies ViewHolder ( binding , ĠonClick ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠPart ies ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparty Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġholder . bind ( party ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠPart ies Diff Callback Ġ: ĠDiff Util . Item Callback < Party >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠParty , Ġnew Item : ĠParty ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠParty , Ġnew Item : ĠParty ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġnew Item ĊĠĠĠ Ġ} Ċ }