package Ġcom . github . frag ivity . example . flow . ui . home Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . github . frag ivity . apply Arguments Ċ import Ġcom . github . frag ivity . apply Vertical InOut Ċ import Ġcom . github . frag ivity . example . base . On ItemClickListener Ċ import Ġcom . github . frag ivity . example . flow . R Ċ import Ġcom . github . frag ivity . example . flow . databinding . Flow Fragment Home Binding Ċ import Ġcom . github . frag ivity . example . flow . listener . On Fragment Open Drawer Listener Ċ import Ġcom . github . frag ivity . example . view binding . view Binding Ċ import Ġcom . github . frag ivity . navigator Ċ import Ġcom . github . frag ivity . push Ċ import Ġkotlin . random . Random Ċ Ċ class ĠHome Fragment Ġ: ĠFragment ( R . layout . flow _ fragment _ home ), ĠToolbar . On MenuItem ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding ( Flow Fragment Home Binding :: bind ) ĊĊĠĠĠ Ġprivate Ġval Ġm Toolbar Ġget () Ġ= Ġbinding . content . toolbar ĊĠĠĠ Ġprivate Ġval Ġm List Ġget () Ġ= Ġbinding . re cy ĊĊĠĠĠ Ġprivate Ġvar Ġopen Drawer Listener : ĠOn Fragment Open Drawer Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġis ĠOn Fragment Open Drawer Listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Drawer Listener Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm Toolbar . setTitle ( R . string . home ) ĊĠĠĠĠĠĠĠ Ġm Toolbar . set Navigation Icon ( R . drawable . ic _ menu _ white _ 2 4 dp ) ĊĠĠĠĠĠĠĠ Ġm Toolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Drawer Listener ?. on Open Drawer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Toolbar . inflate Menu ( R . menu . flow _ home ) ĊĠĠĠĠĠĠĠ Ġm Toolbar . setOn MenuItem ClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠHome Adapter () ĊĠĠĠĠĠĠĠ Ġadapter . setOn ItemClickListener ( object Ġ: ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġitem : ĠAny , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ! is ĠArticle ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Random . next Boolean ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . push ( Detail Fragment :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Vertical InOut () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Arguments ( Detail Fragment . ARGS _ TITLE Ġto Ġitem . title Ġ+ Ġ"_ v 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator . push ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Vertical InOut () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapply Arguments ( Detail Fragment . ARGS _ TITLE Ġto Ġitem . title Ġ+ Ġ"_ v 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġargs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġargs . getString ( Detail Fragment . ARGS _ TITLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDetail Fragment . newInstance ("$ title * ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġm List . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġm List . layout Manager Ġ= ĠLinearLayoutManager ( require Context ()) ĊĠĠĠĠĠĠĠ Ġm List . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġval Ġtitles Ġ= Ġresources . getString Array ( R . array . array _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġcontents Ġ= Ġresources . getString Array ( R . array . array _ content ) ĊĊĠĠĠĠĠĠĠ Ġadapter . items Ġ= ĠList ( 1 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= ĠRandom . Default . nextInt ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArticle ( titles [ index ], Ġcontents [ index ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Range Changed ( 0 , Ġadapter . item Count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Detach () ĊĠĠĠĠĠĠĠ Ġopen Drawer Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MenuItem Click ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠHome Adapter Ġ: ĠRecyclerView . Adapter < Home Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġitems : ĠList < Article > Ġ= Ġempty List () ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlistener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . flow _ item _ home , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . layout Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. on Item Click ( view , Ġitems [ position ], Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . tv Title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . tv Content . text Ġ= Ġitem . content ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Title : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Content : ĠTextView Ġ= Ġview . findViewById ( R . id . tv _ content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset On ItemClickListener ( l : ĠOn ItemClickListener ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener Ġ= Ġl ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠArticle ( ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġcontent : ĠString ĊĠĠĠ Ġ) Ċ }