package Ġcom . nik . my car . ui . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . nik . my car . adapters . Car ListAdapter Ċ import Ġcom . nik . my car . data . App Database Ċ import Ġcom . nik . my car . databinding . Fragment Car List Binding Ċ import Ġcom . nik . my car . view models . Car ViewModel Ċ import Ġcom . nik . my car . view models . Car ViewModel Factory Ċ Ċ class ĠCar List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcar ViewModel : ĠCar ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfactory : ĠCar ViewModel Factory ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapplication Ġ= Ġrequire NotNull ( this . activity ). application ĊĠĠĠĠĠĠĠ Ġval Ġcar Dao Ġ= ĠApp Database . getInstance ( application ). car Dao () ĊĠĠĠĠĠĠĠ Ġfactory Ġ= ĠCar ViewModel Factory ( car Dao ) ĊĠĠĠĠĠĠĠ Ġcar ViewModel Ġ= ĠViewModel Provider ( this , Ġfactory ). get ( Car ViewModel :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Car List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCar ListAdapter () ĊĠĠĠĠĠĠĠ Ġbinding . car List . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġcar ViewModel . cars . observe ( view Lifecycle Owner ) Ġ{ Ġcars Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( cars ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . btn Add Car . setOnClickListener { Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( binding . new Car Name . visibility Ġ== ĠView . IN VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new Car Name . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Car Name Ġ= Ġbinding . new Car Name . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcar ViewModel . add Car ( new Car Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new Car Name . text . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . new Car Name . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// set Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} Ċ } Ċ