package Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . search Ċ Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . arch . lifecycle . ViewModel Providers Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . util . Pair Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . x wr ay . group ie . Group Adapter Ċ import Ġcom . x wr ay . group ie . ViewHolder Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . R Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . databinding . Fragment Search S peak ers Binding Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . Navigation Controller Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . Result Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . common . item decoration . Sticky Header Item Decoration Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . common . view . On Tab Re selected Listener Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . search . item . Speaker Item Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . presentation . search . item . S peak ers Section Ċ import Ġio . github . d roid ka igi . conf sched 2 0 1 8 . util . ext . observe Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSearch S peak ers Fragment Ġ: ĠD agger Fragment (), ĠOn Tab Re selected Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Search S peak ers Binding ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar ĠviewModel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġnavigation Controller : ĠNavigation Controller ĊĠĠĠ Ġprivate Ġval Ġsearch S peak ers ViewModel : ĠSearch S peak ers ViewModel Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠViewModel Providers . of ( this , ĠviewModel Factory ). get ( Search S peak ers ViewModel :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġspeak ers Section Ġ= ĠS peak ers Section () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Search S peak ers Binding . inflate ( layout Inflater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġsetup RecyclerView () ĊĠĠĠĠĠĠĠ Ġsearch S peak ers ViewModel . speak ers . observe ( this , Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeak ers Section . update S peak ers ( result . data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResult . Failure Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( result . e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Adapter Ġ= ĠGroup Adapter < ViewHolder >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġitem , Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġspeaker Id Ġ= Ġ( item Ġas ? ĠS peaker Item )?. speaker ?. id Ġ?: Ġreturn @ setOn ItemClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshared Element Ġ= ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . findViewById < View >( R . id . speaker _ image ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeaker Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Controller . navigate ToS peaker Detail Activity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspeaker Id Ġ= Ġspeaker Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Element Ġ= Ġshared Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( speak ers Section ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . search Session Recycler . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġgroup Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . search Session Recycler . addItem Decoration ( Sticky Header Item Decoration ( context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠSt icky Header Item Decoration . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget GroupId ( position : ĠInt ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinitial Ġ= Ġspeak ers Section . get GroupId ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitial Ġ?: Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCharacter . toUpperCase ( initial ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Group First Line ( position : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġspeak ers Section . get GroupId ( position )?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Tab Re selected () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . search Session Recycler . smooth Scroll To Position ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance (): ĠSearch S peak ers Fragment Ġ= ĠSearch S peak ers Fragment () ĊĠĠĠ Ġ} Ċ } Ċ