package Ġcom . boost . reddit . module . topic List Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . boost . reddit . Application Constants Ċ import Ġcom . boost . reddit . R Ċ import Ġcom . boost . reddit . base . Base Activity Ċ import Ġcom . boost . reddit . databinding . Activity Topic List Binding Ċ import Ġcom . boost . reddit . model . Topic Model Ċ import Ġcom . boost . reddit . module . topic Detail . topic Detail Intent Ċ import Ġkotlinx . android . synt hetic . main . toolbar . view .* Ċ Ċ class ĠTopic List Activity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠTopic List ViewModel ĊĠĠĠ Ġlateinit Ġvar Ġactivity Binding : ĠActivity Topic List Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmenu : ĠMenu ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġactivity Binding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ topic _ list ) ĊĠĠĠĠĠĠĠ Ġactivity Binding . toolbar . toolbar _ title . text Ġ= Ġresources . getString ( R . string . topic _ list ). toUpperCase () ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( activity Binding . toolbar Ġas ĠToolbar ) ĊĠĠĠĠĠĠĠ Ġ( activity Binding . toolbar Ġas ĠToolbar ). set Navigation OnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġhide Back Button () ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this @ Topic List Activity ). get ( Topic List ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġactivity Binding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġsetup Button Listener () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . mock Data () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠApplication Constants . NEW _ TOPIC Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . add New Topic List ( data !!. get Serializable Extra ( Application Constants . NEW _ TOPIC _ MODEL _ DATA ) Ġas ĠTopic Model ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . menu Ġ= Ġmenu ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . activity _ recipe _ list _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . add _ recipe ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . add _ recipe Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( topic Detail Intent ( null , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Constants . NEW _ TOPIC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView (){ ĊĠĠĠĠĠĠĠ Ġactivity Binding . rv Topic . adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTopic ListAdapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠTopic ListAdapter . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( topic Detail Intent ( viewModel . topic List Form . topic List [ position ], Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġactivity Binding . rv Topic . add On Scroll Listener ( object Ġ: ĠRecyclerView . On Scroll Listener () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sc rolled ( re cyclerView : ĠRecyclerView , Ġdx : ĠInt , Ġdy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dy Ġ< Ġ 0 Ġ&& Ġ! activity Binding . btn Add Recipe . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Binding . btn Add Recipe . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . add _ recipe ). isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif Ġ( dy Ġ> Ġ 0 Ġ&& Ġactivity Binding . btn Add Recipe . is Shown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Binding . btn Add Recipe . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . add _ recipe ). isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġactivity Binding . rv Topic . addItem Decoration ( Divider Item Decoration ( activity Binding . rv Topic . context , ĠDiv ider Item Decoration . VERTICAL )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Button Listener (){ ĊĠĠĠĠĠĠĠ Ġactivity Binding . btn Add Recipe . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( topic Detail Intent ( null , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Constants . NEW _ TOPIC ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }