package Ġcom . spac ex . ui . main . fragment . language Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . core . view . do On Next Layout Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . spac ex . R Ċ import Ġcom . spac ex . common . base . Base Fragment Ċ import Ġcom . spac ex . databinding . Main Language List Fragment Binding Ċ import Ġcom . spac ex . model . Language Ċ import Ġcom . spac ex . shared . annotation . Content Layout Ċ import Ġcom . spac ex . util . clear Decor ations Ċ import Ġcom . spac ex . util . viewModel Provider Ċ import Ġkotlinx . android . synt hetic . main . main _ language _ list _ fragment . view .* Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . spac ex . util . consume ĊĊ Ċ @ Content Layout ( R . layout . main _ language _ list _ fragment ) Ċ class ĠLanguage List Fragment Ġ: ĠBase Fragment < Main Language List Fragment Binding >() Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠLanguage List ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠLanguage Adapter ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . LO L LI POP ) ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠLanguage Adapter () ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠviewModel Provider ( viewModel Factory ) ĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ ĠviewModel . get language List () ĊĠĠĠĠĠĠĠ Ġbinding . content View . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġthis @ Language List Fragment . adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( layout Manager Ġas ĠLinearLayoutManager ). recycle Children On Detach Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( item Animator Ġas ĠDefault Item Animator ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupports Change Animations Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Duration Ġ= Ġ 1 6 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Duration Ġ= Ġ 1 6 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Duration Ġ= Ġ 1 6 0 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Duration Ġ= Ġ 1 2 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . mutable LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize List ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ( activity Ġas ĠAppCompatActivity ). set Support ActionBar ( binding . toolbar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate Options Menu ( menu , Ġinflater ) ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . language _ list _ menu , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item !!. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Date New Ġ-> Ġconsume Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . short Date New () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Date Old Ġ-> Ġconsume Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . short Date Old () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize List ( language List : ĠList < Language >) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( language List ) ĊĠĠĠĠĠĠĠ Ġbinding . content View . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwe Ġwant Ġthis Ġto Ġrun Ġafter Ġdiff ing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo On Next Layout Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Decor ations () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLanguage List Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }