package Ġcom . f 2 h . f 2 h _ admin . screens . group _ list Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . navigation . Navigation Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ Ċ import Ġcom . f 2 h . f 2 h _ admin . R Ċ import Ġcom . f 2 h . f 2 h _ admin . database . F 2 H Database Ċ import Ġcom . f 2 h . f 2 h _ admin . database . Session Database Dao Ċ import Ġcom . f 2 h . f 2 h _ admin . databinding . Fragment Groups Binding Ċ import Ġcom . f 2 h . f 2 h _ admin . network . models . Group ĊĊ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠGroups Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Groups Binding ĊĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication Ġby Ġlazy Ġ{ Ġrequire NotNull ( this . activity ). application Ġ} ĊĠĠĠ Ġprivate Ġval ĠdataSource : ĠSession Database Dao Ġby Ġlazy Ġ{ ĠF 2 H Database . getInstance ( application ). session Database Dao Ġ} ĊĠĠĠ Ġprivate Ġval ĠviewModel Factory : ĠGroups ViewModel Factory Ġby Ġlazy Ġ{ ĠGroups ViewModel Factory ( dataSource , Ġapplication ) Ġ} ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠGroups ViewModel Ġby Ġlazy Ġ{ ĠViewModel Provider ( this , ĠviewModel Factory ). get ( Groups ViewModel :: class . java ) Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate ( in flater , ĠR . layout . fragment _ groups Ġ, Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . set Lifecycle Owner ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠGroups Adapter ( Group ClickListener Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Group Selected ( group ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . group List RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ ĠviewModel . group . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠNo Ġgroup Ġtext ĊĠĠĠĠĠĠĠ ĠviewModel . is Group List Empty . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġis Group List Empty Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Group List Empty ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty Groups Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . join Button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . empty Groups Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . join Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . join Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Join Group Button Clicked () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// Set Ġapp Ġbar Ġtitle Ġto Ġgroup Ġname Ġhere ĊĠĠĠĠĠĠĠ Ġ( context Ġas ĠAppCompatActivity ). support ActionBar !!. title Ġ= Ġ" V illage ĠV egg ys " ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Group Selected ( group : ĠGroup ){ ĊĠĠĠĠĠĠĠ ĠviewModel . update Session With Group Info ( group ) ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠGroups Fragment Directions . action Groups Fragment To Group Details Tabs Fragment ( group . groupName Ġ?: Ġ"") ĊĠĠĠĠĠĠĠ Ġview ?. let Ġ{ ĠNavigation . find Nav Controller ( it ). navigate ( action ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Join Group Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠGroups Fragment Directions . action Groups Fragment To Search Groups Fragment () ĊĠĠĠĠĠĠĠ Ġview ?. let Ġ{ ĠNavigation . find Nav Controller ( it ). navigate ( action ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ