package Ġcom . ad ity a am ol b ava de kar . android . apps . culture . ui . main Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . appcompat . widget . Search View Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . recyclerview . widget . St agger ed Grid LayoutManager Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . R Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . Settings Activity Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . databinding . Fragment Main Binding Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . room . note . Culture Colo urs Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . room . note . Notes Data Class Ċ import Ġcom . ad ity a am ol b ava de kar . android . apps . culture . ui . culture _ view model . Culture ViewModel Ċ Ċ class ĠMain Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain ViewModel : ĠMain ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Main Binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġnotes List : ĠMutable List < Notes Data Class > ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠCulture ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġmain ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this ). get ( Main ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Main Binding . inflate ( layout Inflater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġnotes List Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ ĠviewModel . get Notes (). observe ( view Lifecycle Owner ,{ listOf Notes Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Notes . forEach Ġ{ Ġnote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotes List . add ( note ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( notes List . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotes List . add ( Notes Data Class ( 0 ," Welcome Ġto ĠCulture "," This Ġs Ġthe Ġway Ġyou Ġcan Ġcreate Ġand Ġview Ġyour Ġnotes ", null , Culture Colo urs . Yellow ," ", null , 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetUp RecyclerView () ĊĊĠĠĠĠĠĠĠ Ġbinding . fab Add . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNavigation . find Nav Controller ( it ). navigate ( R . id . action _ main Fragment _ to _ add Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp RecyclerView () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbinding . main RecyclerView . layout Manager Ġ= ĠSt agger ed Grid LayoutManager ( 2 , St agger ed Grid LayoutManager . VERTICAL ) ĊĠĠĠĠĠĠĠ Ġbinding . main RecyclerView . adapter Ġ= ĠRegular Note Adapter ( notes List , require Activity (), viewModel ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . main , menu ) ĊĠĠĠĠĠĠĠ Ġmenu . find Item ( R . id . action _ settings ). setOn MenuItem ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( require Activity (), Settings Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġmenu . find Item ( R . id . action _ search ). action View Ġas ĠSearch View ĊĠĠĠĠĠĠĠ Ġsearch View . query Hint Ġ= Ġ" Search ĠNotes " ĊĠĠĠĠĠĠĠ Ġsearch View . setOn Query Text Listener ( object Ġ: ĠSearch View . On Query Text Listener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Submit ( query : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Query Text Change ( new Text : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Notes ( new Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠFilter Notes ( new Text : ĠString ?) Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ }