package Ġcom . example . words app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . words app . databinding . Fragment Letter List Binding ĊĊ Ċ /* Ċ Ġ* Ġfragment ãģ® ãĥ©ãĤ¤ ãĥķ ãĤµ ãĤ¤ ãĤ¯ ãĥ« Ċ Ġ* ĠonCreate () Ċ Ġ* ĠonCreate View () Ċ Ġ* Ġon View Created () Ċ Ġ* ĠonStart () Ċ Ġ* Ġon Resume () Ċ Ġ* Ġon Pause () Ċ Ġ* Ġon Stop () Ċ Ġ* Ġon Destroy View () Ċ Ġ* Ġon Destroy () Ċ Ġ*/ Ċ class ĠLetter List Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġview Binding ãĤĴ çĶ¨ ãģĦ ãĤĭ ĊĠĠĠĠ Ġ* ĠFragment ãģ® ãĥ©ãĤ¤ ãĥķ ãĤµ ãĤ¤ ãĤ¯ ãĥ« ãģ¯ Fragment ãģ® View ãģ® ãĥ©ãĤ¤ ãĥķ ãĤµ ãĤ¤ ãĤ¯ ãĥ« ãĤĪ ãĤĬ éķ· ãģĦ ãģŁãĤģ , ĊĠĠĠĠ Ġ* ĠFragment èĩª ä½ĵ ãģĮ Binding ãģ® åıĤçħ§ ãĤĴ ä¿ĿæĮģ ãģĻãĤĭãģ¨ ãĥª ãĥ¼ãĤ¯ ãģĹãģ¦ ãģĹãģ¾ ãģĨ ĊĠĠĠĠ Ġ* ĠãĤ Ĩ ãģĪ ãģ« on Destroy () ãģ§ binding ãģ® åıĤçħ§ ãĤĴ è§£ æĶ¾ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġ_ binding : ĠFragment Letter List Binding ? Ġ= Ġnull ĊĠĠĠ Ġ// ĠonCreate View ãģ¨ on Destroy View ãģ® éĸĵ ãģłãģĳ æľī åĬ¹ ãģª ãĥĹãĥŃ ãĥĳ ãĥĨãĤ£ ĊĠĠĠ Ġ// Ġget () Ġ: Ġget Only Ġ ãģ¤ ãģ¾ ãĤĬ åĢ¤ ãĤĴåıĸå¾Ĺ ãģĻãĤĭãģĵãģ¨ ãģ¯ ãģ§ãģįãĤĭ ãģĮ ãĢģ ĊĠĠĠ Ġ// Ġä¸Ģ åº¦ åī² ãĤĬ å½ĵ ãģ¦ ãĤī ãĤĮãĤĭ ãģ¨ ä»ĸ ãģ® ãģª ãģ« ãģĭ ãģ« åī² ãĤĬ å½ĵ ãģ¦ ãĤī ãĤĮãĤĭ ãģĵãģ¨ ãģ¯ ãģ§ãģį ãģªãģĦ ĊĠĠĠ Ġprivate Ġval Ġbinding Ġget () Ġ= Ġ_ binding !! ĊĠĠĠ Ġ// Ġre cyclerView ãģ® ãĤ¤ãĥ³ ãĤ¹ãĤ¿ ãĥ³ãĤ¹ ãĢĤ å¾Į ãģ§ åĪĿ æľŁ åĮĸ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġ// ĠLinearLayout ãĤĴä½¿ ãģ£ ãģ¦ãģĦãĤĭ ãģĭ ĊĠĠĠ Ġprivate Ġvar Ġis Linear LayoutManager Ġ= Ġtrue ĊĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠonCreate () Ġ: Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģ® ä½ľæĪĲ æĻĤ ãģ« åĳ¼ ãģ³ åĩº ãģķãĤĮãĤĭ ĊĊĠĠĠĠ Ġ* ĠsavedInstanceState Ġ: Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģĮ å¾ © åħĥ ãģķãĤĮãģŁ æĻĤ ( åĽŀ è» ¢ æĻĤ ãģ¨ ãģĭ ) ãģ« çĶ¨ ãģĦ ãĤĭ ãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģ® çĬ¶æħĭ ãĤĴ ä¿ĿæĮģ ãģĹãģŁ Bundle ĊĠĠĠĠ Ġ* Ġset Has Options Menu Ġ: Ġãĥ¡ ãĥĭ ãĥ¥ ãĥ¼ãĤĴ è¡¨ç¤º ãģĻãĤĭãģŁãĤģ ãģ« true ãģ« ãģĻãĤĭ ãĢĤ ãģĤ ãģ¨ ãģ§ set Create Options Menu () ãĤĴ å®Ł è£ħ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠonCreate View () Ġ: Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģĮ åĪĿ ãĤģ ãģ¦ UI ãĤĴ æıı çĶ» ãģĻãĤĭ ãĤ¿ãĤ¤ ãĥŁ ãĥ³ãĤ° ãģ§ åĳ¼ ãģ³ åĩº ãģķãĤĮãĤĭ ĊĠĠĠĠ Ġ* Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģ® ãĥ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ ãģ® ãĥ« ãĥ¼ãĥĪ ãģ¨ ãģª ãģ£ ãģ¦ãģĦãĤĭ View ãĤĴ è¿Ķ ãģĹãģ¦ UI ãĤĴ æıı çĶ» ( null ãģª ãĤī ä½ķ ãĤĤ æıı çĶ» ãģĹãģªãģĦ ) ĊĊĠĠĠĠ Ġ* Ġinflater Ġ: Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ åĨħ ãģ® View ãĤĴ çĶŁæĪĲ ãģĻãĤĭãģŁãĤģ ãģ« ä½¿çĶ¨ ãģĻãĤĭ LayoutInflater ãĤª ãĥĸãĤ¸ãĤ§ãĤ¯ãĥĪ ĊĠĠĠĠ Ġ* Ġcontainer Ġ: Ġãĥķ ãĥ© ãĤ° ãĥ¡ãĥ³ãĥĪ ãģ® è¦ ª ãģ¨ ãģªãĤĭ ViewGroup ĊĠĠĠĠ Ġ* ĠsavedInstanceState Ġ: Ġ çľģ çķ¥ ĊĊĠĠĠĠ Ġ* Ġinf late ãĥ¡ ãĤ½ãĥĥãĥī Ġ: Ġãĥ ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ XML ãģĭãĤī View ãĤĴä½ľæĪĲ ãģĻãĤĭ ĊĠĠĠĠ Ġ* Ġ( resource : ĠInt , Ġroot : ViewGroup !, Ġattach To Root : ĠBoolean ) ĊĠĠĠĠ Ġ* Ġresource Ġ: Ġ éģ© çĶ¨ ãģĻãĤĭ ãĥ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ XML ãģ® ãĥªãĤ½ãĥ¼ãĤ¹ ID ĊĠĠĠĠ Ġ* Ġroot Ġ: Ġ ä½ľæĪĲ ãģĻãĤĭ View ãĤĴ attach ãģĻãĤĭ View ãĤĴæĮĩå®ļ Ġ= ĠViewGroup ãģ® ãģĵãģ¨ ĊĠĠĠĠ Ġ* Ġattach To Root Ġ: Ġfalse ãģª ãĤī View ãĤĴ è¿Ķ ãģĻ ĊĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠçĶŁæĪĲ ãģķãĤĮãģŁ Binding ãĤ¯ãĥ©ãĤ¹ ãģ« åĲ« ãģ¾ ãĤĮãĤĭ éĿĻ çļĦ inflate () ãĥ¡ ãĤ½ãĥĥãĥī ãĤĴä½¿ ãģĨ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= ĠFragment Letter List Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ// Ġroot View ãģ¸ãģ® åıĤçħ§ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġbinding . root ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġon View Created () Ġ: ĠView ãģ® åĪĿ æľŁ åĮĸ ãĤĴè¡Į ãģĨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġre cyclerView ãģ® åĪĿ æľŁ åĮĸ ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġbinding . re cyclerView ĊĠĠĠĠĠĠĠ Ġ// ĠLinearLayout ãģĭ GridLayout ãģ® ãģ© ãģ¡ ãĤī ãģĭ ãĤĴ éģ© çĶ¨ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġchoose Layout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* Ġon Destroy View () Ġ: ĠView ãģĮ çµĤ äºĨ ãģĻãĤĭãģ¨ ãģį ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠĠĠĠĠ Ġ// Ġbinding ãģ¸ãģ® åıĤçħ§ ãĤĴ è§£ æĶ¾ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ Ġ_ binding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠonCreate Options Menu Ġ: Ġãĥ¡ ãĥĭ ãĥ¥ ãĥ¼ãĤĴ ä½ľæĪĲ ãģĹãģ¦ è¡¨ç¤º ãģĻãĤĭ ĊĠĠĠĠ Ġ* Ġmenu Ġ: ĠMenu ãĤ¯ãĥ©ãĤ¹ ãģ® ãĤ¤ãĥ³ ãĤ¹ãĤ¿ ãĥ³ãĤ¹ ĊĠĠĠĠ Ġ* Ġinflater Ġ: ĠMenu ãģ® ãĥ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ XML ãģĭãĤī View ãĤĴä½ľæĪĲ ãģĻãĤĭ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . layout _ menu , Ġmenu ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠMenu ãģ® ãĤ¢ ãĤ¤ ãĥĨ ãĥł ãģ¸ãģ® åĩ¦çĲĨ ĊĠĠĠĠĠĠĠ Ġ// ĠLinearLayout ãģĭ GridLayout ãĤĴ éģ¸æĬŀ ãģĻãĤĭãģŁãĤģ ãģ® ãĥľ ãĤ¿ ãĥ³ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Button Ġ= Ġmenu . find Item ( R . id . action _ switch _ layout ) ĊĠĠĠĠĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģ® ãĥ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ ãĤĴ å¤īæĽ´ ĊĠĠĠĠĠĠĠ Ġset Icon ( layout Button ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠLayout ãĤĴ å¤īæĽ´ ãģĻãĤĭ ( LinearLayout Ġor ĠGrid Layout ) ĊĠĠĠ Ġ// Ġis Linear LayoutManager ãģ§ æĿ¡ä»¶ åĪĨ å² Ĳ ĊĠĠĠ Ġ// Ġlayout Manager ãģ¨ adapter ãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġchoose Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( is Linear LayoutManager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠLetter Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= ĠLetter Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġãĥ ¬ ãĤ¤ ãĤ¢ ãĤ¦ ãĥĪ å¤īæĽ´ ãĥľ ãĤ¿ ãĥ³ ãģ® ãĤ¢ ãĤ¤ ãĤ³ãĥ³ ãģ® è¨Ńå®ļ ĊĠĠĠ Ġprivate Ġfun Ġset Icon ( menuItem : ĠMenuItem ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġnull ãģĮ æ¸ ¡ ãģķãĤĮãģŁ ãĤī ãģª ãģ« ãĤĤ ãģĹãģªãģĦ ĊĠĠĠĠĠĠĠ Ġif Ġ( menuItem Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĊĠĠĠĠĠĠĠ Ġmenu Item . icon Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Linear LayoutManager ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( this . require Context (), ĠR . drawable . ic _ grid _ layout ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠContext Compat . get Drawable ( this . require Context (), ĠR . drawable . ic _ linear _ layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġãĥ ľ ãĤ¿ ãĥ³ ãģĮ æĬ ¼ ãģķãĤĮãģŁ æĻĤ ãģ® åĩ¦çĲĨ ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ switch _ layout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Linear LayoutManager Ġ= Ġ! is Linear LayoutManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchoose Layout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Icon ( item ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }