package Ġcom . st yling android . sl iding panel ayout Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . os . bundle Of Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . st yling android . sl iding panel ayout . databinding . ListItem Binding Ċ import Ġcom . st yling android . sl iding panel ayout . databinding . Main Fragment Binding Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ Ċ @ Android EntryPoint Ċ class ĠMain Fragment Ġ: ĠFragment ( R . layout . main _ fragment ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠMain Fragment ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠMain Fragment Binding . bind ( view ) ĊĠĠĠĠĠĠĠ Ġval Ġnav Host Fragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . find Fragment ById ( R . id . nav _ host _ fragment ) Ġas ĠNav Host Fragment ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġnav Host Fragment . nav Controller ĊĠĠĠĠĠĠĠ Ġbinding . re cyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠText Item Adapter ( viewModel . list Items ) Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller . navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item Detail Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle Of ( Item Detail Fragment . TEXT _ ARG Ġto Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . open () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠText Item Adapter ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġitems : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġselector : Ġ( String ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠListItem Binding . bind ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( item ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselector ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠViewHolder ( val Ġitem Binding : ĠListItem Binding ) Ġ: ĊĠĠĠĠĠĠĠ ĠRecyclerView . ViewHolder ( item Binding . root ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( text : ĠCharSequence , ĠonClick Listener : ĠView . OnClickListener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . text . text Ġ= Ġtext ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem Binding . text . setOnClickListener ( on ClickListener ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ