package Ġcom . al bert . recyclerview adapter demo Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . al bert . recyclerview . adapter . List Recycler Adapter Ċ import Ġcom . al bert . recyclerview . adapter . X OL azy RecyclerView Holder Ċ import Ġcom . so ve get ables . Wrapper Adapter Ċ import Ġcom . xo grp . recyclerview adapter demo . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ wrapper _ adapter .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . collections . ArrayList Ċ Ċ class ĠWrapper Adapter Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter : Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Adapter 2 : Adapter 2 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Wrapper Adapter : Wrapper Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ wrapper _ adapter ) ĊĊĠĠĠĠĠĠĠ Ġm Adapter Ġ= ĠAdapter ( this ) ĊĠĠĠĠĠĠĠ Ġm Adapter 2 Ġ= ĠAdapter 2 () ĊĊĠĠĠĠĠĠĠ Ġval Ġadapters Ġ= Ġarray ListOf < RecyclerView . Adapter < out ĠRecyclerView . ViewHolder >>() ĊĠĠĠĠĠĠĠ Ġadapters . add ( m Adapter ) ĊĠĠĠĠĠĠĠ Ġadapters . add ( m Adapter 2 ) ĊĠĠĠĠĠĠĠ Ġm Wrapper Adapter Ġ= ĠWrapper Adapter ( adapters ) ĊĠĠĠĠĠĠĠ Ġrv _ data . adapter Ġ= Ġm Wrapper Adapter ĊĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf < Item >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 5 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Item ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter 2 . items Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . data Ġ= ĠlistOf (* Data . ITEMS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter 2 . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ add _ and _ remove , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġheader Index Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġfooter Index Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġval Ġheader Views Ġ= Ġarray ListOf < View >() ĊĠĠĠ Ġprivate Ġval Ġfooter Views Ġ= Ġarray ListOf < View >() ĊĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ add Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheader Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . item _ header , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Views . add ( header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġheader . findViewById < TextView >( R . id . tv _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġ" æĪĳ æĺ¯ header $ header Index " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Wrapper Adapter . add Header View ( header ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ data . scrollTo Position ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Index Ġ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ remove Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( header Views . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġheader Views [ header Views . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Wrapper Adapter . remove Header View ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Views . remove ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Index Ġ-- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ add _ footer Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfooter Ġ= ĠLayoutInflater . from ( this ). inflate ( R . layout . item _ footer , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠtextView Ġ= Ġfooter . findViewById < TextView >( R . id . tv _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView . text Ġ= Ġ" æĪĳ æĺ¯ Footer $ footer Index " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Views . add ( footer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Wrapper Adapter . add Footer View ( footer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ data . scrollTo Position ( m Wrapper Adapter . item Count Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Index Ġ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ remove _ footer Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( footer Views . isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġfooter Views [ footer Views . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Wrapper Adapter . remove Footer View ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Views . remove ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfooter Index Ġ-- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠItem ( var Ġindex : ĠInt ) ĊĊĠĠĠ Ġprivate Ġclass ĠAdapter 2 Ġ: ĠRecyclerView . Adapter < X OL azy RecyclerView Holder > (){ ĊĊĠĠĠĠĠĠĠ Ġvar Ġitems Ġ: ĠArrayList < Item >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠX OL azy RecyclerView Holder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . item _ wrapper 2 , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠX OL azy RecyclerView Holder ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( items Ġ== Ġnull ) Ġ 0 Ġelse Ġitems !!. size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠX OL azy RecyclerView Holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠAdapter ( context : ĠContext ) Ġ: ĠList Recycler Adapter < String >( context ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind Data ViewHolder ( holder : ĠX OL azy RecyclerView Holder , Ġitem : ĠString , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= Ġholder . get < TextView >( R . id . tv _ item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Layout Res (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠR . layout . mul it _ choice _ item ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . startActivity ( Intent ( activity , ĠWrapper Adapter Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ