/* Ċ Ġ* ĠAnt onio Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - present ĠNA VER ĠZ ĠCorp . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġio . github . na ver z . ant onio . databinding . holder Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Lifecycle Registry Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġio . github . na ver z . ant onio . Ant onio Settings Ċ import Ġio . github . na ver z . ant onio . core . Ant onio Model Ċ import Ġio . github . na ver z . ant onio . core . Exceptions Ċ import Ġio . github . na ver z . ant onio . databinding . Ant onio Binding Model Ċ import Ġio . github . na ver z . ant onio . databinding . BR Ċ import Ġio . github . na ver z . ant onio . on Destroy Ċ Ċ @ Suppress (" Le aking This ") Ċ open Ġclass ĠAnt onio Auto Binding ViewHolder ( ĊĠĠĠ Ġlayout Id : ĠInt , ĊĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠ Ġprivate Ġval Ġbinding Variable Id : ĠInt ?, ĊĠĠĠ Ġprivate Ġval Ġadditional Variables : ĠMap < Int , ĠAny >? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġlifecycle Owner : ĠLifecycle Owner ? Ġ= Ġnull , Ċ ) Ġ: ĠAnt onio Binding ViewHolder < ViewData Binding , ĠAnt onio Model >( layout Id , Ġparent ), ĠLifecycle Owner Ġ{ ĊĠĠĠ Ġprivate Ġval Ġm Life Cycle Owner : ĠLifecycle Owner ? Ġ= ĊĠĠĠĠĠĠĠ Ġthis . lifecycle Owner Ġ?: Ġfragment ?. view Lifecycle Owner Ġ?: Ġactivity ĊĊĠĠĠ Ġprivate Ġval Ġlifecycle Registry Ġ= ĠLifecycle Registry ( this ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . item View , ĠitemView ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . lifecycle Owner , Ġm Life Cycle Owner ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . additional Variables , Ġadditional Variables ) ĊĠĠĠĠĠĠĠ Ġadditional Variables ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entry Ġin Ġadditional Variables ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . set Variable ( entry . key , Ġentry . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Exception And Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . INITIAL IZED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . CREATED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Life Cycle Owner ?. on Destroy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Exception And Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . DESTROY ED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ= Ġlifecycle Registry ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( data : ĠAnt onio Model , Ġposition : ĠInt , Ġpayload s : ĠList < Any > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Variable Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! binding . set Variable ( it , Ġdata )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlayout Id Str Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . context . resources . getResource Name ( layout Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( Exceptions . error Illegal Binding ( layout Id Str , Ġdata )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . absolute Adapter Position , Ġabsolute Adapter Position ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . binding Adapter Position , Ġbinding Adapter Position ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . layout Position , Ġlayout Position ) ĊĠĠĠĠĠĠĠ Ġbinding . set Variable ( BR . item Position , Ġposition ) ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġis ĠAnt onio Binding Model Ġ&& Ġdata . require Execute Pending Bindings ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( view Holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Attached To Window ( view Holder ) ĊĠĠĠĠĠĠĠ Ġcatch Exception And Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lifecycle Registry . currentState Ġ!= ĠLifecycle . State . DESTROY ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . STARTED ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . RE SU MED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( view Holder : ĠRecyclerView . ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Detached From Window ( view Holder ) ĊĠĠĠĠĠĠĠ Ġcatch Exception And Log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lifecycle Registry . currentState Ġ!= ĠLifecycle . State . DESTROY ED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Registry . currentState Ġ= ĠLifecycle . State . CREATED ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcatch Exception And Log ( func : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunc . invoke () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( Ant onio Settings . LOG _ TAG , Ġe . message , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }