package Ġcom . m izz ugi . ken si ro . app . pan ri . plugin Ċ Ċ import Ġandroid . view . View Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . m izz ugi . ken si ro . app . pan ri . R Ċ Ċ class ĠItem Click Support Ġprivate Ġconstructor ( private Ġval Ġm RecyclerView : ĠRecyclerView ) Ġ{ ĊĠĠĠ Ġvar Ġon ItemClickListener : ĠOn ItemClickListener ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġon Item Long ClickListener : ĠOn Item Long ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġm OnClickListener Ġ= ĠView . OnClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġm RecyclerView . getChild ViewHolder ( v ) ĊĠĠĠĠĠĠĠ Ġon ItemClickListener ?. on Item Clicked ( m RecyclerView , ĠviewHolder . adapter Position , Ġv ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm On Long ClickListener Ġ= ĠView . On Long ClickListener Ġ{ Ġv Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( on Item Long ClickListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġm RecyclerView . getChild ViewHolder ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġon Long Click Ġ= Ġon Item Long ClickListener ?. on Item Long Clicked ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . adapter Position , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Long Click Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Long ClickListener Ġon Long Click ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Attach Listener Ġ= Ġobject Ġ: ĠRecyclerView . On Child Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Child View Attached To Window ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on ItemClickListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOnClickListener ( m OnClickListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( on Item Long ClickListener Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setOn Long ClickListener ( m On Long ClickListener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Child View Detached From Window ( view : ĠView ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m RecyclerView . setTag ( R . id . item _ click _ support , Ġthis ) ĊĠĠĠĠĠĠĠ Ġm RecyclerView . add On Child Attach State ChangeListener ( m Attach Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun ĠaddTo ( view : ĠRecyclerView ?): ĠItem Click Support ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġnull ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsupport Ġ= Ġview . getTag ( R . id . item _ click _ support ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( support Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport Ġ= ĠItem Click Support ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsupport Ġas ĠItem Click Support ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove From ( view : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsupport Ġ= Ġview . getTag ( R . id . item _ click _ support ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( support Ġis ĠItem Click Support ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport . detach ( view ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetach ( view : ĠRecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . remove On Child Attach State ChangeListener ( m Attach Listener ) ĊĠĠĠĠĠĠĠ Ġview . setTag ( R . id . item _ click _ support , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Clicked ( re cyclerView : ĠRecyclerView , Ġposition : ĠInt , Ġv : ĠView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Item Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Long Clicked ( re cyclerView : ĠRecyclerView , Ġposition : ĠInt , Ġv : ĠView ): ĠBoolean ĊĠĠĠ Ġ} Ċ }