package Ġcom . so ve get ables . choices Ċ Ċ import Ġandroid . view . Action Mode Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ interface ĠMulti Choice Mode Listener Ġ: ĠAction Mode . Callback Ġ{ ĊĠĠĠ Ġfun Ġon Item Checked StateChanged ( mode : ĠAction Mode , Ġposition : ĠInt , Ġchecked : ĠBoolean ) Ċ } Ċ Ċ interface ĠOn Multi Selection Toggle Listener Ġ{ ĊĠĠĠ Ġfun Ġon Open Multi Choice Mode () ĊĠĠĠ Ġfun ĠonClose Multi Choice Mode () Ċ } Ċ Ċ class ĠMulti Choice Mode Wrapper Ġ: ĠMulti Choice Mode Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Wrapped : ĠMulti Choice Mode Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm On Multi Selection Toggle Listener : ĠOn Multi Selection Toggle Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cycle View Ġ: ĠRecyclerView ĊĊĠĠĠ Ġfun Ġattach ( rv : ĠRecyclerView ){ ĊĠĠĠĠĠĠĠ Ġre cycle View Ġ= Ġrv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Wrapped ( wrapped : ĠMulti Choice Mode Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Wrapped Ġ= Ġwrapped ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Multi Selection Toggle Listener ( listener : ĠOn Multi Selection Toggle Listener ){ ĊĠĠĠĠĠĠĠ Ġm On Multi Selection Toggle Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġm On Multi Selection Toggle Listener ?. on Open Multi Choice Mode () ĊĠĠĠĠĠĠĠ ĠView Compat . set Nested Scrolling Enabled ( recycle View , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġm Wrapped !!. onCreate Action Mode ( mode , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepare Action Mode ( mode : ĠAction Mode , Ġmenu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Wrapped !!. on Prepare Action Mode ( mode , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action Item Clicked ( mode : ĠAction Mode , Ġitem : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Wrapped !!. on Action Item Clicked ( mode , Ġitem ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy Action Mode ( mode : ĠAction Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm On Multi Selection Toggle Listener ?. onClose Multi Choice Mode () ĊĠĠĠĠĠĠĠ ĠView Compat . set Nested Scrolling Enabled ( recycle View , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġm Wrapped !!. on Destroy Action Mode ( mode ) Ċ // ĠĠĠĠĠĠĠ Ġm Action Mode Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ// ĠEnd ing Ġselection Ġmode Ġmeans Ġde select ing Ġeverything . Ċ // ĠĠĠĠĠĠĠ Ġclear Selection () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Checked StateChanged ( mode : ĠAction Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , Ġchecked : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Wrapped !!. on Item Checked StateChanged ( mode , Ġposition , Ġchecked ) ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthere Ġare Ġno Ġitems Ġselected Ġwe Ġno Ġlonger Ġneed Ġthe Ġselection Ġmode . Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( getSelected ItemCount () Ġ== Ġ 0 ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġmode . finish () Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }