package Ġcom . y az ant ar ifi . p alex . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . y az ant ar ifi . p alex . adapter . data . P alex Single Item Ċ import Ġcom . y az ant ar ifi . p alex . adapter . impl . P alex Single Item Adapter Implementation Ċ import Ġcom . y az ant ar ifi . p alex . adapter . listeners . P alex Adapter Error Listener Ċ import Ġcom . y az ant ar ifi . p alex . adapter . listeners . P alex Item Click Callback Ċ import Ġjava . lang . Exception Ċ import Ġandroid . content . res . Typed Array Ċ Ċ import Ġandroid . R Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . view . animation . Animation Ċ import Ġandroid . view . animation . Animation Utils Ċ import Ġcom . y az ant ar ifi . p alex . adapter . listeners . P alex Adapter Pagination Callback Ċ import Ġcom . y az ant ar ifi . p alex . adapter . listeners . P alex Remove Listener ĊĊ Ċ /** Ċ Ġ* ĠThis ĠAdapter Ġmainly ĠBuilt Ġto ĠBind ĠSingle ĠItem ĠOnly Ċ Ġ* ĠThis ĠUsed Ġwhen ĠYou ĠHave ĠSame ĠItem ĠId Ġand ĠLayout ĠYou Ġcan ĠUse Ġthis ĠAdapter Ċ Ġ* Ċ Ġ* ĠIf Ġyou Ġwant Ġto ĠUse ĠMulti ĠItems ĠAdapter Ġand ĠViews ĠYou ĠCan Ġuse Ġ( P alex Adapter ) Ċ Ġ*/ Ċ abstract Ġclass ĠP alex Single Item Adapter < Item : ĠP alex Single Item , ĠViewHolder : ĠRecyclerView . ViewHolder > Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġlayout Resource : ĠInt , ĊĠĠĠ Ġprivate Ġval Ġitems : ĠArrayList < Item > Ċ ): ĠRecyclerView . Adapter < ViewHolder >(), ĠP alex Single Item Adapter Implementation < Item , ĠViewHolder > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġre cyclerView Instance : ĠRecyclerView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpagination Callback : ĠP alex Adapter Pagination Callback ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġremove Callback : ĠP alex Remove Listener < Item >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġerror Listener : ĠP alex Adapter Error Listener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġclicks Callback : ĠP alex Item Click Callback < Item >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġchild Clickable Ids : ĠArrayList < Int > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate ĠYour ĠOwn ĠInstance Ġin ĠYour ĠAdapter Ġto ĠReturn ĠInstance Ġof ĠThe ĠViewHolder ĊĠĠĠĠ Ġ* ĠThis ĠMethod Ġis ĠWorking ĠLike Ġthis ĠBecause ĠMaybe ĠYou Ġwant ĠTo ĠUse ĠAny thing ĠOf ĠViews ĠBinding ĊĠĠĠĠ Ġ* ĠNot ĠJust ĠLayout ĠIn flater Ġand ĠThis ĠMethod ĠLike Ġthis ĠTo ĠLet Ġyou ĠChoose ĊĠĠĠĠ Ġ* ĠDep ends Ġon ĠYour ĠList Ġwhich ĠType Ġyou Ġwant Ġto ĠUse ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe ĠDefault ĠSupported ĠBehavior Ġis Ġreturning ĠViewHolder ( get Layout Instance ( context )) ĊĠĠĠĠ Ġ* ĠThis ĠWill ĠUse ĠLayoutInflater Ġto ĠInf late Ġthe ĠTarget ĠResource ĠId ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget ViewHolder ( parent . context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalling Ġon Bind Item Ġon ĠEach ĠItem ĠWith ĠAll ĠInformation ĠN eeded Ġfor ĠSingle ĠItem ĊĠĠĠĠ Ġ* ĠUsed ĠLike Ġthis ĠTo ĠGet ĠContext ĠAlways Ġ, ĠIn ĠSome ĠC ases Ġit 's ĠBetter ĠTo ĠSend ĠContext ĊĠĠĠĠ Ġ* ĠDirect ly ĠR ather Ġthan ĠRequest ing ĠContext Ġfrom ĠViews Ġ... ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBind Ġon ĠEach ĠF ocused ĠItems ĠThe ĠClick able ĠViews ĊĠĠĠĠ Ġ* Ġ 1 . ĠParent ĠClick able ĠViews ĊĠĠĠĠ Ġ* Ġ 2 . ĠChild s ĠI ds ĠClick able ĠViews ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Bind Item ( items [ position ], Ġcontext , Ġposition , Ġholder ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind Clickable Items ( holder , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Child Views Clickable Items Binding ( holder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( position Ġ>= Ġitem Count Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpagination Callback ?. onNext Page Request () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBind ĠEach ĠItem ĠParent ĠLayout ĠWith ĠClick ĠListener Ġand ĠLong ĠClick ĠListener ĊĠĠĠĠ Ġ* ĠTo ĠReturn Ġthe ĠClick ed ĠEvent Ġto ĠCallback ĠMethods ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠYou ĠNeed Ġto ĠCall Ġadd ClickListener ( Listener ) Ġto ĠActivate Ġthis ĠMethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Bind Clickable Items ( view Holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . click s Callback Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewHolder . item View ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . click s Callback ?. on Item Clicked ( items [ position ], Ġposition , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewHolder . item View ?. setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . click s Callback ?. on Item Long Clicked ( items [ position ], Ġposition , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis ĠMethod ĠWill ĠBind Ġthe ĠChild ĠClick able ĠI ds Ġfrom ĠThis ĠMethod ĊĠĠĠĠ Ġ* Ġadd Child Click ableView Ids ( ArrayList < Clickable ĠLayout ĠI ds >) ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġthis ĠWill ĠCheck Ġon ĠAll ĠChild ĠI ds Ġin Ġthe ĠArrayList Ġto ĠAdd ĠClick ĠList eners Ġon ĠEach ĠItem ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Child Views Clickable Items Binding ( view Holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . click s Callback Ġ== Ġnull Ġ|| Ġchild Clickable Ids . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġchild Clickable Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . item View ?. findViewById < View >( item )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . click s Callback ?. on Item Clicked ( items [ position ], Ġposition , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . click s Callback ?. on Item Long Clicked ( items [ position ], Ġposition , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod ĠOnly Ġif Ġyour ĠDesign Ġhas ĠChild s ĠItems ĠClick able ĊĠĠĠĠ Ġ* ĠIf ĠNot ĠLeave Ġthis ĠMe tho Ġwith ĠEmpty ĠArray Ġand Ġthe ĠB inder ĠWill ĠSkip ĠChecking ĊĠĠĠĠ Ġ* Ġon ĠChild ĠItems ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Child Click ableView Ids ( child Clickable Ids : ĠArrayList < Int >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . child Clickable Ids . addAll ( child Clickable Ids ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse ĠThis ĠCallback ĠWhen Ġyou Ġwant Ġto ĠReturn Ġthe ĠRemoved ĠItem ĠEvent Ġand Ġit 's ĠPosition ĊĠĠĠĠ Ġ* ĠThis ĠMethod ĠWill ĠBe ĠTrigger Ġthe ĠAtt ached ĠCallback Ġvia Ġremove Item ( Position ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Remove Listener ( callback : ĠP alex Remove Listener < Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . remove Callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Items (): ĠArrayList < Item > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . items ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse ĠThis ĠMethod Ġwhen Ġyou Ġwant Ġto ĠListen Ġto Ġyour ĠLast Ġitem Ġin ĠItems ĊĠĠĠĠ Ġ* ĠIf ĠLast ĠItem ĠTrigger ed , ĠWill ĠRequest ĠNext ĠPage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Pagination Listener ( pagination Callback : ĠP alex Adapter Pagination Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . pagination Callback Ġ= Ġpagination Callback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod ĠWhen Ġyou Ġwant Ġto ĠBind ĠClick s Ġon ĠEach ĠItem Ġin ĠThe ĠList ĊĠĠĠĠ Ġ* ĠJust Ġattach Ġthe ĠListener Ġand ĠThe ĠCallback ĠWill Ġbe ĠCalled ĊĠĠĠĠ Ġ* ĠWhen ĠYou ĠClick Ġon ĠAny ĠItem Ġin ĠAdapter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd ClickListener ( callback : ĠP alex Item Click Callback < Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . click s Callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIn Ġget ViewHolder ĠMethod ĠIf Ġyou Ġwant Ġto ĠReturn ĠViewHolder Ġwith ĠLayout ĠIn flater ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod Ġto ĠGet ĠTarget ĠView Ġby ĠAtt ached ĠLayout ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Layout Instance ( context : ĠContext ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLayoutInflater . from ( context ). inflate ( layout Resource , Ġnull , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod Ġwhen ĠYou Ġwant Ġto ĠSet ĠMore Ġitems Ġin ĠThe ĠList ĊĠĠĠĠ Ġ* ĠThen ĠNotify Ġthe ĠAdapter Ġthat ĠItems Ġhas ĠBe en ĠChanged ĊĠĠĠĠ Ġ* ĠUsed ĠAfter ĠFetch ing ĠNext ĠPage Ġfrom ĠPagination ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Items ( items : ĠArrayList < Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView Instance ?. post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠImport ant ĠTo ĠUse Ġit Ġwhen Ġyou Ġwant ĠTo ĠSupport ĠPagination ĊĠĠĠĠ Ġ* ĠTo ĠNotify Ġthe ĠItems ĠOnce ĠRecyclerView Ġis ĠFinished ĠComputing ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd RecyclerView Instance ( re cyclerView : ĠRecyclerView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView Instance Ġ= Ġre cyclerView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis Ġmethod Ġwhen Ġyou Ġwant Ġto ĠRemove ĠThe ĠCurrent ĠItems ĊĠĠĠĠ Ġ* ĠAnd ĠReplace Ġall Ġof Ġthem Ġwith ĠNew ĠItems ĊĠĠĠĠ Ġ* ĠThen ĠNotify ĠThe ĠAdapter Ġthat ĠAll ĠItems ĠHas ĠBe en ĠChanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġreplace Items ( items : ĠArrayList < Item >) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . items . addAll ( items ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod Ġwhen ĠYou ĠW ant Ġto ĠRemove ĠItem ĠBy ĠPosition ĊĠĠĠĠ Ġ* ĠJust ĠCall Ġthis ĠMethod ĠWith ĠThe ĠTarget ĠRemoved ĠPosition Ġand ĠThis ĠWill ĠRemove ĊĠĠĠĠ Ġ* ĠThe ĠTarget ĠItem Ġthen ĠNotify ĠAdapter Ġthat ĠItem Ġis ĠRemoved Ġfrom ĠList ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto ĠGet ĠEvent ĠCallback Ġabout ĠRemoving ĠItem ĊĠĠĠĠ Ġ* ĠCall Ġthis ĠMethod Ġadd Remove Listener Ġto ĠAttach ĠRemove ĠListener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġremove Item ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Item Ġ= Ġthis . items [ position ] ĊĠĠĠĠĠĠĠĠĠĠ Ġthis . items . remove ( currentItem ) ĊĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Removed ( position ) ĊĠĠĠĠĠĠĠĠĠĠ Ġthis . remove Callback ?. on Item Removed ( currentItem , Ġposition ) ĊĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġthis ĠMethod Ġwhen ĠYou Ġwant Ġto ĠRemove ĠItem ĠWith ĠAnimation ĊĠĠĠĠ Ġ* ĠIf Ġyou ĠDon 't ĠUse ĠAnimation ĠUse Ġthis ĠMethod Ġ( removeItem ( Position )) ĊĠĠĠĠ Ġ* Ġif ĠYou Ġwant Ġa ĠF ade ĠOut ĠAnimation ĠCall Ġthis ĠMethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġremove Item ( position : ĠInt , Ġis Animation Enabled : ĠBoolean , Ġanimation Duration : ĠLong , Ġtarget View : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( position Ġ== ĠRecyclerView . NO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Animation Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim : ĠAnimation Ġ= ĠAnimation Utils . load Animation ( context , ĠR . anim . fade _ out ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim . duration Ġ= Ġanimation Duration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View ?. start Animation ( anim ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Item ( position ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd ĠR ipple ĠClick ĠEffect Ġon ĠEach ĠTarget ĠView ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto ĠAdd ĠClick ĠEffect Ġon ĠEach ĠItem Ġin ĠAdapter ĊĠĠĠĠ Ġ* ĠCall ĠThis ĠMethod ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Re cycle ") ĊĠĠĠ Ġoverride Ġfun Ġadd Click Effect Item ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . is Clickable Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . is Focus able Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġattrs Ġ= Ġint ArrayOf ( R . attr . selectable Item Background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtyped Array : ĠTyped Array Ġ= Ġcontext . obtain Styled Attributes ( attrs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Resource Ġ= Ġtyped Array . getResource Id ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . setBackground Resource ( background Resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . error Listener ?. onError Attached ( ex ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse ĠThis ĠMethod Ġwhen ĠYou Ġwant ĠTo ĠCatch Ġun ĠExpected ĠExceptions Ġin ĠAdapter ĊĠĠĠĠ Ġ* Ġfrom ĠAny ĠMethod Ġand ĠReturn ĠTo ĠLog ĠExceptions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġadd Error Listener ( callback : ĠP alex Adapter Error Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . error Listener Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis ĠMethod ĠWill Ġreturn ĠThe ĠSize Ġof ĠAll ĠItems Ġin ĠAdapter ĊĠĠĠĠ Ġ* ĠUsed Ġfor ĠRe cycl ing , ĠPagination ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIt 's ĠImport ant Ġto ĠCall Ġthis ĠMethod Ġin ĊĠĠĠĠ Ġ* ĠActivity Ġ-> Ġon Destroy ĊĠĠĠĠ Ġ* ĠFragment Ġ-> Ġon Destroy View ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTo ĠRemove ĠAll ĠList eners , ĠCallback s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . error Listener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . remove Callback Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . pagination Callback Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView Instance ?. adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġthis . re cyclerView Instance Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ