Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ Ċ import Ġandroid . widget . TextView Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . mal food ware .* Ċ import Ġjava . util .* ĊĊ Ċ // ĠCreate Ġthe Ġbasic Ġadapter Ġextending Ġfrom ĠRecyclerView . Adapter Ċ // ĠNote Ġthat Ġwe Ġspecify Ġthe Ġcustom ĠViewHolder Ġwhich Ġgives Ġus Ġaccess Ġto Ġour Ġviews Ċ class ĠEnt ries Adapter ( private Ġval Ġm Entries : ĠList < Food Di ary Entry >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Entries Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġ// ĠProvide Ġa Ġdirect Ġreference Ġto Ġeach Ġof Ġthe Ġviews Ġwithin Ġa Ġdata Ġitem ĊĠĠĠ Ġ// ĠUsed Ġto Ġcache Ġthe Ġviews Ġwithin Ġthe Ġitem Ġlayout Ġfor Ġfast Ġaccess ĊĠĠĠ Ġinner Ġclass ĠViewHolder ( list Item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( list Item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠYour Ġholder Ġshould Ġcontain Ġand Ġinitialize Ġa Ġmember Ġvariable ĊĠĠĠĠĠĠĠ Ġ// Ġfor Ġany Ġview Ġthat Ġwill Ġbe Ġset Ġas Ġyou Ġrender Ġa Ġrow ĊĠĠĠĠĠĠĠ Ġvar Ġblood S ugar Ġ= ĠitemView . findViewById < TextView >( R . id . blood _ s ugar ) ĊĠĠĠĠĠĠĠ Ġvar Ġfood s Ġ= ĠitemView . findViewById < TextView >( R . id . food s ) ĊĠĠĠĠĠĠĠ Ġvar Ġtime Ġ= ĠitemView . findViewById < TextView >( R . id . time ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠFood Entry List Listener ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġshow Food Entry Focus sed ( entry : ĠFood Di ary Entry ) ĊĠĠĠĠĠĠĠ Ġfun Ġhide Food Entry Focus sed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġelement List : ĠMutable Map < Long , ĠView > Ġ= Ġmutable Map Of () ĊĠĠĠ Ġvar Ġclicked : ĠView ? Ġ= Ġnull ĊĠĠĠ Ġlateinit Ġvar Ġactivity App : ĠFood Entry List Listener ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġparent . context ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( parent . context Ġis ĠFood Entry List Listener ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity App Ġ= Ġparent . context Ġas ĠFood Entry List Listener ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" LOG ", Ġ" Could Ġnot Ġconvert Ġcontext Ġto ĠFood Entry Listener ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġcustom Ġlayout ĊĠĠĠĠĠĠĠ Ġval Ġcontact View Ġ= Ġinflater . inflate ( R . layout . di ary _ entry _ row , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// ĠReturn Ġa Ġnew Ġholder Ġinstance ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( contact View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Entries . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġdata Ġmodel Ġbased Ġon Ġposition ĊĠĠĠĠĠĠĠ Ġval Ġentry : ĠFood Di ary Entry Ġ= Ġm Entries . get ( position ) ĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠItem View Ġvars Ġfrom ĠViewHolder ĊĠĠĠĠĠĠĠ Ġval Ġblood S ugar Ġ= Ġholder . blood S ugar ĊĠĠĠĠĠĠĠ Ġval Ġfood s Ġ= Ġholder . food s ĊĠĠĠĠĠĠĠ Ġvar Ġtime Text Ġ= Ġholder . time ĊĊĠĠĠĠĠĠĠ Ġ// Ġsets Ġthe Ġblood Ġs ugar Ġtext Ġand Ġinserts Ġinto Ġitem Ġview Ġtext ĊĠĠĠĠĠĠĠ Ġvar Ġbs Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġbs Ġ+= Ġif Ġ( entry . blood S ugar Ġ== Ġnull ) Ġ" 0 " Ġelse Ġentry . blood S ugar . toString () ĊĠĠĠĠĠĠĠ Ġblood S ugar . setText ( bs ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsets Ġrecipe / ingredient Ġnames Ġand Ġinserts Ġto Ġview text ĊĠĠĠĠĠĠĠ Ġvar Ġfood s Text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġfor Ġ( recipe Ġin Ġentry . recipes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood s Text Ġ+= Ġrecipe . key . rec Name Ġ+ Ġ" Ġ(${ recipe . value . toInt ()} g )\ n " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( ingredient Ġin Ġentry . ingredients ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood s Text Ġ+= Ġingredient . key . name Ġ+ Ġ" Ġ(${ ingredient . value . toInt ()} g )\ n " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( food s Text . length Ġ> Ġ 0 Ġ&& Ġfood s Text [ food s Text . length Ġ- Ġ 1 ] Ġ== Ġ'\ n ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfood s Text Ġ= Ġfood s Text . substring ( 0 , Ġfood s Text . length Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( food s Text . length Ġ== Ġ 0 ) Ġfood s Text Ġ= Ġ" N / A " ĊĠĠĠĠĠĠĠ Ġfood s . setText ( food s Text ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġsets Ġtime Ġand Ġinserts Ġto Ġview text ĊĠĠĠĠĠĠĠ Ġval Ġcal Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġcal . time In Millis Ġ= Ġentry . time Millis ĊĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġif Ġ( cal . get ( Calendar . HOUR ) Ġ== Ġ 0 ) Ġ" 1 2 " Ġelse Ġcal . get ( Calendar . HOUR ). toString () ĊĠĠĠĠĠĠĠ Ġval Ġmin Ġ= Ġcal . get ( Calendar . MINUTE ) ĊĠĠĠĠĠĠĠ Ġvar Ġtime String Ġ= Ġ"$ hour :" ĊĠĠĠĠĠĠĠ Ġtime String Ġ+= Ġif Ġ( min Ġ< Ġ 1 0 ) Ġ" 0 $ min " Ġelse Ġmin ĊĠĠĠĠĠĠĠ Ġtime String Ġ+= Ġif Ġ( cal . get ( Calendar . AM _ PM ) Ġ== Ġ 0 ) Ġ" Ġam " Ġelse Ġ" Ġpm " ĊĠĠĠĠĠĠĠ Ġtime Text . setText ( time String ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġatt aches Ġon Ġclick Ġlisteners Ġto Ġopen Ġfocus sed Ġfragment Ċ // ĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠFood Entry Focus sed Fragment ( entry ) Ċ // ĠĠĠĠĠĠĠ Ġvar Ġbundle Ġ= ĠBundle () Ċ // ĠĠĠĠĠĠĠ Ġbundle . put Long ( Food Entry Focus sed Fragment . B UNDLE _ MILLI , Ġentry . time Millis ) Ċ // ĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġbundle ĊĠĠĠĠĠĠĠ Ġtime Text . setOnClickListener ( Entry ClickListener ( entry )) ĊĠĠĠĠĠĠĠ Ġfood s . setOnClickListener ( Entry ClickListener ( entry )) ĊĠĠĠĠĠĠĠ Ġblood S ugar . setOnClickListener ( Entry ClickListener ( entry )) ĊĠĠĠĠĠĠĠ Ġelement List [ entry . time Millis ] Ġ= Ġtime Text . parent . parent Ġas ĠView ĊĠĠĠĠĠĠĠ Ġif Ġ( entry . time Millis Ġ== ĠEntry Focus sed Fragment . LAST _ ENTRY . time Millis ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( time Text . parent . parent Ġas ĠView ). set BackgroundColor ( MainActivity . COL _ LIST _ DARK ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠEntry ClickListener ( val Ġentry : ĠFood Di ary Entry ): ĠView . OnClickListener ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress Lint (" Resource As Color ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( p 0 : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Selection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġelement List [ entry . time Millis ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( clicked Ġ!= Ġnull Ġ&& Ġclicked !!. equals ( view )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" LOG ", Ġ" Food Ġentry Ġclicked Ġtwice , Ġdet aching ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview !!. set BackgroundColor ( Color . parse Color ("# cff 1 ed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity App . hide Food Entry Focus sed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity App . hide Food Entry Focus sed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" LOG ", Ġ" Food Ġentry Ġclicked Ġfor Ġfirst Ġtime , Ġatt aching ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclicked Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview !!. set BackgroundColor ( MainActivity . COL _ LIST _ DARK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity App . show Food Entry Focus sed ( entry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Selection () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġfor ( element Ġin Ġelement List ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement . value . set BackgroundColor ( MainActivity . COL _ LIST _ LIGHT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }