package Ġcom . fro go box . nut r ition app . mv vm . nut r ition . meal Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . fro go box . nut r ition app . core . Base Activity Ċ import Ġcom . fro go box . nut r ition framework . databinding . Activity Me al Binding Ċ import Ġcom . fro go box . nut r ition framework . databinding . Item Me al Category Binding Ċ import Ġcom . fro go box . nut r ition app . util . Constant Ċ import Ġcom . fro go box . nut r ition core . model . meal . Me al Ċ import Ġcom . fro go box . nut r ition core . util . N ut ri Func Ċ import Ġcom . fro go box . nut r ition framework . databinding . N ut ri Rv Grid Type 2 Binding Ċ import Ġcom . fro go box . nut r ition framework . recycler . core . IN ut ri Binding Adapter Ċ import Ġcom . fro go box . nut r ition framework . recycler . core . N ut ri Recycler Notify Listener Ċ import Ġcom . google . gson . Gson Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel Ċ Ċ class ĠMe al Activity Ġ: ĠBase Activity < Activity Me al Binding >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġme al ViewModel : ĠMe al ViewModel Ġby ĠviewModel () ĊĊĠĠĠ Ġoverride Ġfun Ġsetup View Binding (): ĠActivity Me al Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠActivity Me al Binding . inflate ( layout Inflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ Ġme al ViewModel . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetList Me als (" b ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . observe ( this @ Me al Activity , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Event Progress View ( binding . progress Bar , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Failed . observe ( this @ Me al Activity , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Data . observe ( this @ Me al Activity , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Rv ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsetup UI ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Detail Activity ( Constant . Title Activity . ACTIVITY _ ME AL ) ĊĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Rv Category () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Rv Category () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadapter Callback Ġ= Ġobject Ġ: ĠIN ut ri Binding Adapter < String , ĠItem Me al Category Binding > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset View Binding ( parent : ĠViewGroup ): ĠItem Me al Category Binding Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠItem Me al Category Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup Init Component ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠItem Me al Category Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . nut ri Rv ListType 1 2 Tv Title . text Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠItem Me al Category Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġme al ViewModel . getList Me als ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Long Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠItem Me al Category Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < String > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . nut ri Rv Ab jad . injector Binding < String , ĠItem Me al Category Binding >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addData ( N ut ri Func . array Ab jad ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Callback ( adapter Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Layout Linear Horizontal ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Rv ( data : ĠList < Me al >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Callback Ġ= Ġobject Ġ: ĠIN ut ri Binding Adapter < Me al , ĠN ut ri Rv Grid Type 2 Binding > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġset View Binding ( parent : ĠViewGroup ): ĠN ut ri Rv Grid Type 2 Binding Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN ut ri Rv Grid Type 2 Binding . inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsetup Init Component ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠN ut ri Rv Grid Type 2 Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠMe al , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < Me al > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( root . context ). load ( data . str Me al Thumb ). into ( nut ri Rv Grid Type 2 Iv Post er ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnut ri Rv Grid Type 2 Tv Title . text Ġ= Ġdata . str Me al ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnut ri Rv Grid Type 2 Tv Subtitle . text Ġ= Ġdata . str Category ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠN ut ri Rv Grid Type 2 Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠMe al , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < Me al > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra Data Ġ= ĠGson (). toJson ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Me al Activity , ĠMe al Detail Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra ( Constant . Extra . EXTRA _ ME AL _ DETAIL , Ġextra Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Long Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding : ĠN ut ri Rv Grid Type 2 Binding , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠMe al , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Listener : ĠN ut ri Recycler Notify Listener < Me al > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . str Me al ?. let Ġ{ Ġshow Toast ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . nut ri Rv . injector Binding < Me al , ĠN ut ri Rv Grid Type 2 Binding >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addData ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Callback ( adapter Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Layout Grid ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ Ċ }