package Ġcom . ra ion . f urn it ale . ui . categories . living room Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view binding . library . fragment . view Binding Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . ra ion . f urn it ale . R Ċ import Ġcom . ra ion . f urn it ale . core . data . Resource Ċ import Ġcom . ra ion . f urn it ale . core . ui . Category Adapter Ċ import Ġcom . ra ion . f urn it ale . databinding . Living Room Fragment Binding Ċ import Ġcom . ra ion . f urn it ale . utils . Show State Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ Ċ class ĠL iving Room Fragment Ġ: ĠFragment (), ĠShow State < Living Room Fragment Binding > Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġliving Room ViewModel : ĠL iving Room ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġprivate Ġval Ġliving Room Binding Ġby Ġview Binding < Living Room Fragment Binding >() ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġliving Room Adapter : ĠCategory Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . living _ room _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġliving Room Adapter Ġ= Ġactivity ?. let Ġ{ ĠCategory Adapter ( it ) Ġ} !! ĊĊĠĠĠĠĠĠĠ Ġliving Room Binding . rv Living Room . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġliving Room Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġliving Room ViewModel . living Room . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . data ?. let Ġ{ Ġit 1 Ġ-> Ġliving Room Adapter . set All ( it 1 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Resource Success ( living Room Binding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Loading Ġ-> Ġon Resource Loading ( living Room Binding ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Error Ġ-> Ġon Resource Failed ( living Room Binding , Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resource Success ( binding : ĠL iving Room Fragment Binding ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Living Room . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Default Error . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Error . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv ErrorMessage . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Living Room . visibility Ġ= Ġvisible ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resource Failed ( binding : ĠL iving Room Fragment Binding ?, Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Living Room . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Living Room . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Default Error . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Error . visibility Ġ= Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv ErrorMessage . text Ġ= Ġmessage ?: Ġresources . getText ( R . string . message _ if _ null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv ErrorMessage . visibility Ġ= Ġvisible ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resource Loading ( binding : ĠL iving Room Fragment Binding ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Living Room . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv Living Room . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinclude Default Error . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiv Error . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv ErrorMessage . visibility Ġ= Ġgone ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }