package Ġcom . example . intel ig ent nal od ow ka _ mobile app . F ridge . Show All Products Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . Filter able Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . card view . widget . Card View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . intel ig ent nal od ow ka _ mobile app . Data Base Handler Ċ import Ġcom . example . intel ig ent nal od ow ka _ mobile app . F ridge . Product Details Activity Ċ import Ġcom . example . intel ig ent nal od ow ka _ mobile app . Product Ċ import Ġcom . example . intel ig ent nal od ow ka _ mobile app . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ card _ view _ all _ products . view .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ f ridge .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ f ridge . view .* Ċ import Ġorg . w 3 c . dom . Text Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ class ĠShow All Products Adapter ( context : ĠF ridge Activity , Ġvar Ġproducts List : ĠArrayList < Product >): ĠRecyclerView . Adapter < My ViewHolder >(), Ċ Filter able Ġ{ ĊĊĠĠĠ Ġinternal Ġvar Ġproducts Filter List Ġ= ĠArrayList < Product >() ĊĊĠĠĠ Ġinit { ĊĠĠĠĠĠĠĠ Ġthis . products Filter List Ġ= Ġproducts List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( view Group : ĠViewGroup , Ġposition : ĠInt ): ĠMy ViewHolder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( view Group . context ) ĊĠĠĠĠĠĠĠ Ġval Ġcard View Product Ġ= Ġlayout Inflater . inflate ( R . layout . activity _ card _ view _ all _ products , Ġview Group , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠMy ViewHolder ( card View Product ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġproducts Filter List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Filter (): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠFilter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġperform Filtering ( char String : ĠCharSequence ?): ĠFilter Results Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchar Search Ġ= Ġchar String . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( char Search . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts Filter List Ġ= Ġproducts List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult List Ġ= ĠArrayList < Product >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( row Ġin Ġproducts List ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( row . name Product !!. toLowerCase (). contains ( char Search . toLowerCase ())){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult List . add ( row ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts Filter List Ġ= Ġresult List ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Results Ġ= ĠFilter . Filter Results () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Results . values Ġ= Ġproducts Filter List ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfilter Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( char Sequence : ĠCharSequence ?, Ġresults : ĠFilter Results ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproducts Filter List Ġ= Ġresults !!. values Ġas ĠArrayList < Product > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Date ( context : ĠF ridge Activity ){ ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠ Ġval Ġdb Helper Ġ= ĠData Base Handler ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Pattern (" dd . MM . yyyy ") ĊĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġcurrent . format ( formatter ) ĊĊĠĠĠĠĠĠĠ Ġfor ( item Ġin Ġproducts Filter List ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . expiration Date ! =" Br ak ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( item . after Expiration Date ==" false ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġexpiration Date Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . expiration Date , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDateTime Formatter . of Pattern (" dd . MM . yyyy ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠdateTime Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . parse ( formatted , ĠDateTime Formatter . of Pattern (" dd . MM . yyyy ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expiration Date . compareTo ( dateTime ) Ġ< Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuccess Ġ= Ġdb Helper . update After Expiration Date ( item . id ," true ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠMy ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Date ( F ridge Activity ()) ĊĠĠĠĠĠĠĠ Ġval Ġproduct Name _ card View = products Filter List [ holder . adapter Position ]. name Product ĊĠĠĠĠĠĠĠ Ġval Ġtype Product _ card View Ġ= Ġproducts Filter List [ holder . adapter Position ]. type ĊĠĠĠĠĠĠĠ Ġval Ġcount Product _ card View Ġ= Ġproducts Filter List [ holder . adapter Position ]. quantity ĊĠĠĠĠĠĠĠ Ġval Ġif Expired Product Ġ= Ġproducts Filter List [ holder . adapter Position ]. after Expiration Date ĊĠĠĠĠĠĠĠ Ġset Image ( type Product _ card View , Ġholder ) ĊĊĠĠĠĠĠĠĠ Ġholder . product Name . text Ġ= Ġproduct Name _ card View ĊĠĠĠĠĠĠĠ Ġholder . product Type . text Ġ= Ġtype Product _ card View ĊĠĠĠĠĠĠĠ Ġholder . product Count . text Ġ= Ġ" Lic z ba Ġsz t uk : Ġ"+ count Product _ card View ĊĊĠĠĠĠĠĠĠ Ġif ( if Expired Product . equals (" true ") Ġ|| Ġif Expired Product . equals (" neutral ")){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . alert ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card View . set Card BackgroundColor ( Color . parse Color ("# E AE 1 A 2 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( position Ġ% Ġ 2 Ġ== Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card View . set Card BackgroundColor ( Color . parse Color ("# FFFFFF ")) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( position Ġ% Ġ 2 Ġ!= Ġ 1 Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . card View . set Card BackgroundColor ( Color . parse Color ("# CCE BF 6 ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊ ĊĊĠĠĠĠĠĠĠ Ġval Ġcard View Product Ġ= Ġholder . view . card View _ product ĊĠĠĠĠĠĠĠ Ġval Ġcontext : Context Ġ= Ġholder . view . context ĊĊĠĠĠĠĠĠĠ Ġcard View Product . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Edit Ġ= ĠIntent ( context , ĠProduct Details Activity :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpr id uct ID Ġ= Ġproducts List [ holder . adapter Position ]. id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpr id uct Name Ġ= products List [ holder . adapter Position ]. name Product ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Expiration Date = products List [ holder . adapter Position ]. expiration Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Purchase Date = products List [ holder . adapter Position ]. purchase Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproduct Quantity Ġ= Ġproducts List [ holder . adapter Position ]. quantity ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Edit . putExtra (" id ", Ġpr id uct ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Edit . putExtra (" name ", Ġpr id uct Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Edit . putExtra (" expiration Date ", Ġproduct Expiration Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Edit . putExtra (" purchase Date ", Ġproduct Purchase Date ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Edit . putExtra (" quantity ", Ġproduct Quantity ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent Edit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Image ( type Product _ card View Ġ: ĠString , Ġholder : ĠMy ViewHolder ){ ĊĊĠĠĠĠĠĠĠ Ġif ( type Product _ card View Ġ== Ġ" O wo ce "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . fr uits ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" War zy wa "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . ve get able ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" N ab ia ÅĤ "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . mil k _ products ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" Pro duk ty Ġz bo Å¼ owe "){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . f lour ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" S ÅĤ ody c ze ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . c andy ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" Pr ze k Äħ ski ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . sn ack ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" Mi ÄĻ so ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . me at ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" Ry by ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . fish ) ĊĠĠĠĠĠĠĠ Ġ} else Ġif ( type Product _ card View Ġ== Ġ" N ap o je ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . dr inks ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . image Product . setBackground Resource ( R . drawable . shopping _ bag _ red ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ Ċ class ĠMy ViewHolder ( val Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠ Ġvar Ġproduct Name Ġ: ĠTextView Ġ= Ġview . findViewById ( R . id . ProductName _ card View ) ĊĠĠĠ Ġvar Ġproduct Type Ġ: ĠTextView Ġ= Ġview . findViewById ( R . id . Type _ card View ) ĊĠĠĠ Ġvar Ġproduct Count Ġ: ĠTextView Ġ= Ġview . findViewById ( R . id . Count _ card View ) ĊĠĠĠ Ġvar Ġcard View Ġ: ĠCard View Ġ= Ġview . findViewById ( R . id . card View _ product ) ĊĠĠĠ Ġvar Ġimage Product Ġ: ĠImageView Ġ= Ġview . findViewById ( R . id . imageView Product ) Ċ Ċ }