package Ġcom . mike pen z . fast adapter . app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . recyclerview . widget . Default Item Animator Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . mike pen z . fast adapter . Fast Adapter Ċ import Ġcom . mike pen z . fast adapter . adapters . Item Adapter Ċ import Ġcom . mike pen z . fast adapter . app . adapters . Sticky Header Adapter Ċ import Ġcom . mike pen z . fast adapter . app . items . Simple Item Ċ import Ġcom . mike pen z . fast adapter . select . get Select Extension Ċ import Ġcom . time hop . sticky headers recyclerview . Sticky Recycler Headers Decoration Ċ import Ġkotlinx . android . synt hetic . main . activity _ sample .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠThis Ġsample Ġshow cases Ġcompatibility Ġthe Ġawesome ĠSt icky - Headers Ġlibrary Ġby Ġtime hop Ċ Ġ* Ġhttps :// github . com / time hop / sticky - headers - recyclerview Ċ Ġ*/ Ċ class ĠSt icky Header Sample Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// save Ġour ĠFast Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfast Adapter : ĠFast Adapter < Simple Item > ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ sample ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠHandle ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setTitle ( R . string . sample _ sticky _ header ) ĊĊĠĠĠĠĠĠĠ Ġ// create Ġour Ġadapters ĊĠĠĠĠĠĠĠ Ġval Ġsticky Header Adapter Ġ= ĠSt icky Header Adapter < Simple Item >() ĊĠĠĠĠĠĠĠ Ġval Ġheader Adapter Ġ= ĠItem Adapter < Simple Item >() ĊĠĠĠĠĠĠĠ Ġval Ġitem Adapter Ġ= ĠItem Adapter < Simple Item >() ĊĊĠĠĠĠĠĠĠ Ġ// create Ġour ĠFast Adapter ĊĠĠĠĠĠĠĠ Ġfast Adapter Ġ= ĠFast Adapter . with ( listOf ( header Adapter , Ġitem Adapter )) ĊĠĠĠĠĠĠĠ Ġval Ġselect Extension Ġ= Ġfast Adapter . get Select Extension () ĊĠĠĠĠĠĠĠ Ġselect Extension . is Selectable Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// configure Ġour Ġfast Adapter ĊĠĠĠĠĠĠĠ Ġ// as Ġwe Ġprovide Ġid 's Ġfor Ġthe Ġitems Ġwe Ġwant Ġthe Ġhas Stable Ids Ġenabled Ġto Ġspeed Ġup Ġthings ĊĠĠĠĠĠĠĠ Ġfast Adapter . set Has Stable Ids ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// get Ġour Ġre cyclerView Ġand Ġdo Ġbasic Ġsetup ĊĠĠĠĠĠĠĠ Ġrv . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġrv . item Animator Ġ= ĠDefault Item Animator () ĊĠĠĠĠĠĠĠ Ġrv . adapter Ġ= Ġsticky Header Adapter . wrap ( fast Adapter ) ĊĊĠĠĠĠĠĠĠ Ġ// this Ġadds Ġthe ĠSt icky ĠHeaders Ġwithin Ġour Ġlist ĊĠĠĠĠĠĠĠ Ġval Ġdecoration Ġ= ĠSt icky Recycler Headers Decoration ( sticky Header Adapter ) ĊĠĠĠĠĠĠĠ Ġrv . addItem Decoration ( decoration ) ĊĊĠĠĠĠĠĠĠ Ġ// fill Ġwith Ġsome Ġsample Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠSimple Item (). with Name (" Header ") ĊĠĠĠĠĠĠĠ Ġitem . identifier Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġheader Adapter . add ( item ) ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠArrayList < Simple Item >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple Item Ġ= ĠSimple Item (). with Name (" Test Ġ$ i "). with Header ( headers [ i Ġ/ Ġ 5 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Item . identifier Ġ= Ġ( 1 0 0 Ġ+ Ġi ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( simple Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġitem Adapter . add ( items ) ĊĊĠĠĠĠĠĠĠ Ġ// so Ġthe Ġheaders Ġare Ġaware Ġof Ġchanges ĊĠĠĠĠĠĠĠ Ġsticky Header Adapter . register Adapter Data Observer ( object Ġ: ĠRecyclerView . Adapter Data Observer () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecoration . invalidate Headers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// restore Ġselections Ġ( this Ġhas Ġto Ġbe Ġdone Ġafter Ġthe Ġitems Ġwere Ġadded ĊĠĠĠĠĠĠĠ Ġfast Adapter . with Saved InstanceState ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ// set Ġthe Ġback Ġarrow Ġin Ġthe Ġtoolbar ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Home Button Enabled ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState (_ out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġout State Ġ= Ġ_ out State ĊĠĠĠĠĠĠĠ Ġ// add Ġthe Ġvalues Ġwhich Ġneed Ġto Ġbe Ġsaved Ġfrom Ġthe Ġadapter Ġto Ġthe Ġbundle ĊĠĠĠĠĠĠĠ Ġout State Ġ= Ġfast Adapter . save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// handle Ġthe Ġclick Ġon Ġthe Ġback Ġarrow Ġclick ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . id . home Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġheaders Ġ= ĠarrayOf (" A ", Ġ" B ", Ġ" C ", Ġ" D ", Ġ" E ", Ġ" F ", Ġ" G ", Ġ" H ", Ġ" I ", Ġ" J ", Ġ" K ", Ġ" L ", Ġ" M ", Ġ" N ", Ġ" O ", Ġ" P ", Ġ" Q ", Ġ" R ", Ġ" S ", Ġ" T ", Ġ" U ", Ġ" V ", Ġ" W ", Ġ" X ", Ġ" Y ", Ġ" Z ") ĊĠĠĠ Ġ} Ċ } Ċ