package Ġru . har on code . aqu arius . core Ċ Ċ import Ġandroidx . collection . Sparse Array Compat Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġru . har on code . aqu arius . core . async . Async Render Adapter Ċ import Ġru . har on code . aqu arius . core . base . Base Render Adapter Ċ import Ġru . har on code . aqu arius . core . base . str ategies . Differ Str ategies Ċ import Ġru . har on code . aqu arius . core . base . str ategies . Differ Strategy Ċ import Ġru . har on code . aqu arius . core . click er . Click er Ċ import Ġru . har on code . aqu arius . core . click er . Click ers Ċ import Ġru . har on code . aqu arius . core . helper . Render Item Touch Helper Callback Ċ import Ġru . har on code . aqu arius . core . renderer . Base Renderer Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠRender Adapter Builder < T Ġ: ĠAny > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtouch Helper Callback : ĠRender Item Touch Helper Callback Ġ= ĠRender Item Touch Helper Callback () ĊĠĠĠ Ġprivate Ġvar Ġid Selector : Ġ( T ) Ġ-> ĠLong Ġ= Ġ{ ĠRecyclerView . NO _ ID Ġ} ĊĠĠĠ Ġprivate Ġval Ġrender ers Ġ= ĠSparse Array Compat < Base Renderer < out ĠT , Ġ*, Ġ* >>() ĊĠĠĠ Ġprivate Ġval Ġclick ers Ġ= ĠSparse Array Compat < Click er < *, Ġ* >>() ĊĠĠĠ Ġprivate Ġvar Ġclass ViewType Selector : ĠView Type Selector < K Class < out ĠT >> Ġ= ĠClass ViewType Selector () ĊĊĠĠĠ Ġfun Ġwith Item CallBack ( item Callback : ĠRender Item Touch Helper Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtouch Helper Callback Ġ= Ġitem Callback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith Id Selector ( selector : Ġ( T ) Ġ-> ĠLong ): ĠRender Adapter Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġid Selector Ġ= Ġselector ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwith ViewType Selector ( selector : ĠView Type Selector < K Class < out ĠT >> ): ĠRender Adapter Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ViewType Selector Ġ= Ġselector ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< E , ĠV H Ġ: ĠRecyclerView . ViewHolder > Ġrenderer ( ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt , ĊĠĠĠĠĠĠĠ Ġrenderer : ĠBase Renderer < out ĠT , ĠE , ĠV H >, ĊĠĠĠĠĠĠĠ Ġitem Click er : ĠClick er < E , ĠV H > Ġ= ĠClick ers . none () ĊĠĠĠ Ġ): ĠRender Adapter Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck (! render ers . containsKey ( view Type )) Ġ{ Ġ" Builder Ġalready Ġcontains Ġview Ġholder Ġrenderer Ġfor Ġview Ġtype Ġ= Ġ$ view Type " Ġ} ĊĠĠĠĠĠĠĠ Ġcheck (! click ers . containsKey ( view Type )) Ġ{ Ġ" Builder Ġalready Ġcontains Ġview Ġholder Ġclick er Ġfor Ġview Ġtype Ġ= Ġ$ view Type " Ġ} ĊĊĠĠĠĠĠĠĠ Ġrender ers . put ( view Type , Ġrenderer ) ĊĠĠĠĠĠĠĠ Ġclick ers . put ( view Type , Ġitem Click er ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< E , ĠV H Ġ: ĠRecyclerView . ViewHolder > Ġrenderer ( ĊĠĠĠĠĠĠĠ Ġk Class : ĠK Class < out ĠT >, ĊĠĠĠĠĠĠĠ Ġrenderer : ĠBase Renderer < out ĠT , ĠE , ĠV H >, ĊĠĠĠĠĠĠĠ Ġitem Click er : ĠClick er < E , ĠV H > Ġ= ĠClick ers . none () ĊĠĠĠ Ġ): ĠRender Adapter Builder < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Type Ġ= Ġclass ViewType Selector . create ViewType For ( k Class ) ĊĊĠĠĠĠĠĠĠ Ġcheck (! render ers . containsKey ( view Type )) Ġ{ Ġ" Builder Ġalready Ġcontains Ġview Ġholder Ġrenderer Ġfor Ġview Ġtype Ġ= Ġ${ k Class . simple Name }" Ġ} ĊĠĠĠĠĠĠĠ Ġcheck (! click ers . containsKey ( view Type )) Ġ{ Ġ" Builder Ġalready Ġcontains Ġview Ġholder Ġclick er Ġfor Ġview Ġtype Ġ= Ġ${ k Class . simple Name }" Ġ} ĊĊĠĠĠĠĠĠĠ Ġrender ers . put ( view Type , Ġrenderer ) ĊĠĠĠĠĠĠĠ Ġclick ers . put ( view Type , Ġitem Click er ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild ( ĊĠĠĠĠĠĠĠ Ġdiffer Strategy : ĠD iffer Strategy < T > Ġ= ĠD iffer Str ategies . none () ĊĠĠĠ Ġ) Ġ= ĠBase Render Adapter ( ĊĠĠĠĠĠĠĠ Ġdiffer Strategy Ġ= Ġdiffer Strategy , ĊĠĠĠĠĠĠĠ Ġclick ers Ġ= Ġclick ers , ĊĠĠĠĠĠĠĠ ĠitemId Selector Ġ= Ġid Selector , ĊĠĠĠĠĠĠĠ Ġview Type Selector Ġ= Ġclass ViewType Selector , ĊĠĠĠĠĠĠĠ Ġrender ers Ġ= Ġrender ers , ĊĠĠĠĠĠĠĠ Ġtouch Helper Callback Ġ= Ġtouch Helper Callback ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġbuild Async ( ĊĠĠĠĠĠĠĠ Ġitem Callback : ĠDiff Util . Item Callback < T > ĊĠĠĠ Ġ) Ġ= ĠAsync Render Adapter ( ĊĠĠĠĠĠĠĠ Ġitem Callback Ġ= Ġitem Callback , ĊĠĠĠĠĠĠĠ Ġclick ers Ġ= Ġclick ers , ĊĠĠĠĠĠĠĠ ĠitemId Selector Ġ= Ġid Selector , ĊĠĠĠĠĠĠĠ Ġview Type Selector Ġ= Ġclass ViewType Selector , ĊĠĠĠĠĠĠĠ Ġrender ers Ġ= Ġrender ers , ĊĠĠĠĠĠĠĠ Ġtouch Helper Callback Ġ= Ġtouch Helper Callback ĊĠĠĠ Ġ) Ċ } Ċ