package Ġcom . one hook . one hook lib . ui . dashboard Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . one hook . one hook lib . ui . controllers .* Ċ import Ġcom . one hook . one hook lib . ui . reusable . Large TextView Ċ import Ġcom . one hook . one hook lib . ui . reusable . Medium TextView Ċ import Ġcom . one hook . on hook library kotlin . graphics . Drawable Factory Ċ import Ġcom . one hook . on hook library kotlin . utils . dp Ċ import Ġcom . one hook . on hook library kotlin . utils . dp f Ċ import Ġcom . one hook . on hook library kotlin . view . LP Ċ import Ġcom . one hook . on hook library kotlin . view . MATCH _ PARENT Ċ import Ġcom . one hook . on hook library kotlin . view controller . controller . Linear RecyclerView Controller Ċ import Ġcom . one hook . on hook library kotlin . view controller . controller . Simple Adapter Ċ import Ġcom . one hook . on hook library kotlin . view controller . controller . ViewController Ċ import Ġcom . one hook . on hook library kotlin . widget . Toolbar Ċ Ċ private Ġinterface ĠItem Ċ private Ġdata Ġclass ĠSection ( val Ġtitle : ĠString ) Ġ: ĠItem Ċ private Ġdata Ġclass ĠMenuItem ( ĊĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠ Ġval Ġsubtitle : ĠString ?, ĊĠĠĠ Ġval Ġaction : Ġ() Ġ-> ĠView Controller Ċ ) Ġ: ĠItem Ċ Ċ private Ġclass ĠSection Cell ( context : ĠContext ) Ġ: ĠLarge TextView ( context ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLP (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠMATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġletter Spacing Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠ Ġset TextColor ( Color . WHITE ) ĊĠĠĠĠĠĠĠ Ġset Padding ( dp ( 1 0 ), Ġdp ( 1 5 ), Ġdp ( 1 0 ), Ġdp ( 1 5 )) ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . DK GRAY ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠItem Cell ( context : ĠContext ) Ġ: ĠFrame Layout ( context ) Ġ{ ĊĊĠĠĠ Ġval Ġtitle Label : ĠMedium TextView Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMedium TextView ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġletter Spacing Ġ= Ġ 0 . 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( dp ( 1 0 ), Ġdp ( 1 5 ), Ġdp ( 1 0 ), Ġdp ( 1 5 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLP (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠMATCH _ PARENT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadd View ( title Label ) ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĠDrawable Factory . background R ipple Drawable ( Color . WHITE , ĠColor . GRAY ) ĊĠĠĠĠĠĠĠ Ġbackground Ġ= Ġdrawable ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠMenu ViewController Ġ: ĠLinear RecyclerView Controller () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitems Ġ= ĠArrayList < Item >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . add ( Section ( title Ġ= Ġ" View ĠIn fl ation ")) ĊĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" By ĠCode ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠView Inf late By Code Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" By ĠXml ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠView Inf late By Xml Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" By ĠCode ĠWithout ĠAuto ĠLayout ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠView Inf late By Manual Code Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġitems . add ( Section ( title Ġ= Ġ" Views ")) ĊĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Stack Layout ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠStack Layout Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Line ĠGraph ĠView ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠLine Graph Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġitems . add ( Section ( title Ġ= Ġ" Navigation ")) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 2 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMenuItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Navigation ĠDemo ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsubtitle Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġ{ ĠController Navigation Demo ViewController () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtoolbar : ĠToolbar Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠToolbar ( context Ġ= Ġcontext ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠLP (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= ĠMATCH _ PARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġactivity . safe Area . top Ġ+ Ġdp ( 5 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. frame Layout Lp () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Padding ( 0 , Ġactivity . safe Area . top , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle . get Or Build (). text Ġ= Ġ" one Hook ĠLibrary " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . parse Color ("# BB FFFFFF ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelevation Ġ= Ġd pf ( 8 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate View ( in flater , Ġcontainer ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( it Ġas ? ĠViewGroup )?. addView ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġview Did Load ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . view Did Load ( view ) ĊĠĠĠĠĠĠĠ Ġview . set BackgroundColor ( Color . WHITE ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . addItem Decoration ( object Ġ: ĠRecyclerView . Item Decoration () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Offsets ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect : ĠRect , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent : ĠRecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠRecyclerView . State ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( parent . getChild Adapter Position ( view )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . set ( 0 , Ġactivity . safe Area . top Ġ+ Ġdp ( 5 6 ), Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems . size Ġ- Ġ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Rect . set ( 0 , Ġ 0 , Ġ 0 , Ġactivity . safe Area . bottom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġobject Ġ: ĠSimple Adapter () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠSection Cell ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠItem Cell ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitems [ position ] Ġis ĠSection Ġ-> Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon BindView ( view : ĠView , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Type Ġ= ĠgetItem ViewType ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems . get ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ? ĠSection Cell )?. text Ġ= Ġ( item Ġas ? ĠSection )?. title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmenu Item Ġ= Ġitem Ġas ? ĠMenuItem ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ? ĠItem Cell )?. title Label ?. text Ġ= Ġmenu Item ?. title Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Item ?. action ?. invoke ()?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Controller ?. push ( it , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }