package Ġv mode v . clear keep . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . recyclerview . widget . Async Differ Config Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġim . vector . R Ċ import Ġim . vector . databinding . Item Room Direct Share File Binding Ċ import Ġim . vector . databinding . Room Invite Item Binding Ċ import Ġim . vector . databinding . Room Item Binding Ċ import Ġorg . matrix . android sdk . core . Log Ċ import Ġv mode v . clear keep . adapters . Interfaces . IList Room RecyclerView Adapter Ċ import Ġv mode v . clear keep . binding adapters . interfaces . IData Binding Component Ċ import Ġv mode v . clear keep . exec utors . App Executors Ċ import Ġv mode v . clear keep . ult is . On Single ClickListener Ċ import Ġv mode v . clear keep . view modelo bject s . Room List User Ċ Ċ class ĠShare File RecyclerView Adapter Ġconstructor ( app Executors : ĠApp Executors , Ġdiff Callback : ĠDiff Util . Item Callback < Room List User >, Ġprivate Ġval Ġdata Binding Component : ĠI Data Binding Component ) ĊĊĠĠĠ Ġ: ĠList Adapter < Room List User , ĠData Bound ViewHolder < ViewData Binding >>( Async Differ Config . Builder ( diff Callback ) ĊĠĠĠĠĠĠĠ Ġ. setBackground Thread Executor ( app Executors . disk IO ()) ĊĠĠĠĠĠĠĠ Ġ. build ()), ĠIList Room RecyclerView Adapter Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget flag ( flag : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" "," ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlayouts : ĠArray < Int > Ġ= ĠarrayOf ( R . layout . room _ invite _ item , ĠR . layout . room _ item ); ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem Click : Ġ( Room List User , ĠInt ) Ġ-> ĠUnit ? ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem Long Click : Ġ( Room List User ) Ġ-> ĠUnit ? ĊĠĠĠ Ġprivate Ġvar Ġlifecycle Owner : ĠLifecycle Owner ? Ġ= Ġnull ; ĊĠĠĠ Ġprivate Ġvar Ġcurrent UserId : ĠString ? Ġ= Ġnull ; ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( p 0 : ĠViewGroup , Ġp 1 : ĠInt ): ĠData Bound ViewHolder < ViewData Binding > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠView Data Binding ; ĊĠĠĠĠĠĠĠ Ġif Ġ( p 1 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate < Item Room Direct Share File Binding >( LayoutInflater . from ( p 0 . context ), ĠR . layout . item _ room _ direct _ share _ file , Ġp 0 , Ġfalse , Ġdata Binding Component . getData Binding Component ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener ( object Ġ: On Single ClickListener (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Click ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . room List User ?. let Ġ{ Ġitem Click ?. invoke ( it , Ġ 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . button Join . setOnClickListener Ġ{ Ġbinding . room List User ?. let Ġ{ Ġitem Click ?. invoke ( it , Ġ 1 ) Ġ} Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . button Decl ine . setOnClickListener Ġ{ Ġbinding . room List User ?. let Ġ{ Ġitem Click ?. invoke ( it , Ġ 2 ) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . inflate < Item Room Direct Share File Binding >( LayoutInflater . from ( p 0 . context ), ĠR . layout . item _ room _ direct _ share _ file , Ġp 0 , Ġfalse , Ġdata Binding Component . getData Binding Component ()); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener ( object Ġ: On Single ClickListener (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Single Click ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . room List User ?. let Ġ{ Ġitem Click ?. invoke ( it , Ġ 3 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlifecycle Owner ?. let Ġ{ Ġbinding . lifecycle Owner Ġ= Ġlifecycle Owner Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠData Bound ViewHolder ( binding ); ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( p 0 : ĠData Bound ViewHolder < ViewData Binding >, Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getItem ViewType ( p 1 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( p 0 . binding Ġas ĠRoom Invite Item Binding ). room List User Ġ= ĠgetItem ( p 1 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 . binding . execute Pending Bindings (); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( p 0 . binding Ġas ĠItem Room Direct Share File Binding ). room List User Ġ= ĠgetItem ( p 1 ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 . binding . execute Pending Bindings (); Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġp 0 . binding . current UserId Ġ= Ġcurrent UserId ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( getItem ( position ). room ?. type Ġ!= Ġ 6 5 Ġ&& ĠgetItem ( position ). room ?. type Ġ!= Ġ 6 6 ) Ġ 1 Ġelse Ġ 0 ; ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Item Click ( item Click : Ġ( Room List User , ĠInt ) Ġ-> ĠUnit ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item Click Ġ= Ġitem Click ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Item Long Click ( item Long Click : Ġ( Room List User ) Ġ-> ĠUnit ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġthis . item Long Click Ġ= Ġitem Long Click ; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Adapter (): ĠList Adapter < Room List User , Ġ*> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Life Cycle Owner ( lifecycle Owner : ĠLifecycle Owner , Ġcurrent UserId : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . lifecycle Owner Ġ= Ġlifecycle Owner ; ĊĠĠĠĠĠĠĠ Ġthis . current UserId Ġ= Ġcurrent UserId ; ĊĠĠĠ Ġ} Ċ Ċ }