package Ġcom . simple mobile tools . file manager . pro . adapters Ċ Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . simple mobile tools . commons . activities . Base Simple Activity Ċ import Ġcom . simple mobile tools . commons . adapters . My RecyclerView Adapter Ċ import Ġcom . simple mobile tools . commons . interfaces . Refresh RecyclerView Listener Ċ import Ġcom . simple mobile tools . commons . views . My RecyclerView Ċ import Ġcom . simple mobile tools . file manager . pro . R Ċ import Ġcom . simple mobile tools . file manager . pro . extensions . config Ċ import Ġkotlinx . android . synt hetic . main . item _ manage _ favorite . view .* Ċ import Ġjava . util .* Ċ Ċ class ĠManage F avorites Adapter ( activity : ĠBase Simple Activity , Ġvar Ġfavor ites : ĠArrayList < String >, Ġval Ġlistener : ĠRefresh RecyclerView Listener ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView : ĠMy RecyclerView , Ġitem Click : Ġ( Any ) Ġ-> ĠUnit ) Ġ: ĠMy RecyclerView Adapter ( activity , Ġre cyclerView , Ġnull , Ġitem Click ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġconfig Ġ= Ġactivity . config ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Drag Listener ( true ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Action Menu Id () Ġ= ĠR . menu . cab _ remove _ only ĊĊĠĠĠ Ġoverride Ġfun Ġaction Item Pressed ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . cab _ remove Ġ-> Ġremove Selection () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Selectable ItemCount () Ġ= Ġfavor ites . size ĊĊĠĠĠ Ġoverride Ġfun Ġget Is Item Selectable ( position : ĠInt ) Ġ= Ġtrue ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Selection Key ( position : ĠInt ) Ġ= Ġfavor ites . get OrNull ( position )?. hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Key Position ( key : ĠInt ) Ġ= Ġfavor ites . indexOf First Ġ{ Ġit . hashCode () Ġ== Ġkey Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprepare Action Mode ( menu : ĠMenu ) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= Ġcreate ViewHolder ( R . layout . item _ manage _ favorite , Ġparent ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfavorite Ġ= Ġfavor ites [ position ] ĊĠĠĠĠĠĠĠ Ġholder . bind View ( favorite , Ġtrue , Ġtrue ) Ġ{ ĠitemView , Ġlayout Position Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup View ( item View , Ġfavorite , Ġselected Keys . contains ( favorite . hashCode ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbind ViewHolder ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġfavor ites . size ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View ( view : ĠView , Ġfavorite : ĠString , Ġis Selected : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanage _ favorite _ title . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġfavorite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( config . textColor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmanage _ favorite _ holder ?. isSelected Ġ= Ġis Selected ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove Selection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġremove F avorites Ġ= ĠArrayList < String >( selected Keys . size ) ĊĠĠĠĠĠĠĠ Ġval Ġpositions Ġ= Ġjava . util . ArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġselected Keys . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġfavor ites . indexOf First Ġ{ Ġit . hashCode () Ġ== Ġkey Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpositions . add ( position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfavorite Ġ= ĠgetItem With Key ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( favorite Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove F avorites . add ( favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . remove Favorite ( favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpositions . sort Descending () ĊĠĠĠĠĠĠĠ Ġremove Selected Items ( positions ) ĊĊĠĠĠĠĠĠĠ Ġfavor ites . removeAll ( remove F avorites ) ĊĠĠĠĠĠĠĠ Ġif Ġ( favorites . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ?. refresh Items () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem With Key ( key : ĠInt ): ĠString ? Ġ= Ġfavor ites . first OrNull Ġ{ Ġit . hashCode () Ġ== Ġkey Ġ} Ċ } Ċ