package Ġcom . example . internet cookbook . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat . getColor Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . internet cookbook . R Ċ import Ġcom . example . internet cookbook . fragment presenter . Camera Fragment Presenter Ċ import Ġcom . example . internet cookbook . helper . capitalize Ċ import Ġcom . example . internet cookbook . helper . read Bit 6 4 Image Single Ċ import Ġcom . example . internet cookbook . models . Food Master Model Ċ import Ġcom . example . internet cookbook . pager . Pager Fragment View Directions Ċ import Ġkotlinx . android . synt hetic . main . list each item . view .* Ċ import Ġkotlinx . android . synt hetic . main . list items . view .* Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . jetbrains . ank o . onComplete Ċ import Ġjava . lang . Exception Ċ Ċ class ĠRe ceipt ListAdapter ( ĊĠĠĠ Ġprivate Ġvar Ġfood Items : ĠArrayList < Food Master Model >, ĊĠĠĠ Ġprivate Ġvar Ġpresenter : ĠCamera Fragment Presenter , ĊĠĠĠ Ġprivate Ġvar Ġvalid Food Items : ĠArrayList < Food Master Model >, ĊĠĠĠ Ġprivate Ġvar Ġhome View : ĠView Ċ ): ĠRecyclerView . Adapter < Receipt ListAdapter . Main Holder >() Ġ{ ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠMain Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMain Holder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . list each item , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġfood Items . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMain Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfood Ġ= Ġfood Items [ holder . adapter Position ] ĊĠĠĠĠĠĠĠ Ġholder . bind ( food , presenter , food Items , valid Food Items , home View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMain Holder Ġconstructor ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ){ ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood Model : ĠFood Master Model , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter : ĠCamera Fragment Presenter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood Items : ĠArrayList < Food Master Model >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Food Items : ĠArrayList < Food Master Model >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View : ĠView ĊĠĠĠĠĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Item Text . setText ( food Model . food . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( food Model . food . found Item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . set BackgroundColor ( getColor ( item View . context , R . color . color Green )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Remove Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Update Button . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Image . setImage Bitmap ( read Bit 6 4 Image Single ( food Model . image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( food Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Image . visibility Ġ== ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . m Item Counter . text Ġ= Ġfood Items [ position ]. food . items Counter . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Image . visibility Ġ== ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . set BackgroundColor ( getColor ( item View . context , R . color . color Red Light )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Remove Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Item ( food Items , Ġhome View , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Update Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext = ĠitemView . mF ood Item Text . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfood Items [ position ]. food . name Ġ= Ġcapital ize ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfood Already Present Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valid Food Items . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( valid Food Ġin Ġvalid Food Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valid Food . food . name . toUpperCase () Ġ== Ġfood Items [ position ]. food . name . toUpperCase ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Item ( food Items , home View , position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . m Item Counter . text Ġ= Ġfood Items [ position ]. food . items Counter . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfood Already Present Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! food Already Present ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd New Valid Item ( text , Ġpresenter , Ġfood Model , Ġvalid Food Items ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd New Valid Item ( text : ĠString , Ġpresenter : ĠCamera Fragment Presenter , Ġfood Model : ĠFood Master Model , Ġvalid Food Items : ĠArrayList < Food Master Model >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Async Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIf Ġfood Ġitem Ġis Ġnot Ġin Ġvalid Ġfood Items ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġpresenter . search Items ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult . food . name . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . set BackgroundColor ( getColor ( item View . context , ĠR . color . color Green )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Image . setImage Bitmap ( read Bit 6 4 Image Single ( result . image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . food . found Item Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfood Model . food . found Item Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Food Items . add ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . mF ood Image . visibility Ġ== ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . set BackgroundColor ( getColor ( item View . context , ĠR . color . color Red Light )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠP ager Fragment View Directions . action Pager Fragment To Food Create View ( text , food Model . food . shop ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . find Nav Controller (). navigate ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠ ĠRemove Ġitem Ġfrom Ġlist ĊĠĠĠĠĠĠĠ Ġfun Ġremove Item ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood Items : ĠArrayList < Food Master Model >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood Items . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View . mF ood List RecyclerView . remove View At ( position ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View . mF ood List RecyclerView . adapter ?. notify Item Removed ( position ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome View . mF ood List RecyclerView . adapter ?. notify Item Range Changed ( position , Ġfood Items . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }