package Ġcom . example . words app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . words app . databinding . Fragment Letter List Binding ĊĊ Ċ class ĠLetter List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Letter List Binding ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġprivate Ġvar Ġis Linear LayoutManager Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Letter List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġthis @ Letter List Fragment . get LayoutManager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠLetter Adapter () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget LayoutManager () Ġ= Ġif Ġ( is Linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLinearLayoutManager ( require Context ()) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠGrid LayoutManager ( require Context (), Ġ 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . layout _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Button Ġ= Ġmenu . find Item ( R . id . action _ switch _ layout ) ĊĠĠĠĠĠĠĠ Ġset Icon ( layout Button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( item . itemId Ġ== ĠR . id . action _ switch _ layout ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Linear LayoutManager Ġ= Ġ! is Linear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . re cyclerView . layout Manager Ġ= Ġget LayoutManager () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġthrow ĠIllegalArgumentException (" Un tracked Ġmenu Ġoption ") ĊĊĠĠĠ Ġprivate Ġfun Ġset Icon ( menuItem : ĠMenuItem ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Item ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . icon Ġ= Ġif Ġ( is Linear LayoutManager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . ic _ grid _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠContext Compat . get Drawable ( require Context (), ĠR . drawable . ic _ linear _ layout ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }