package Ġcom . hc any z . z adapter . hod ler Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Lifecycle Registry Ċ import Ġcom . hc any z . z adapter . Z Adapter Ċ import Ġcom . hc any z . z adapter . registry . I Holder Creator Name Ċ Ċ /** Ċ Ġ* Ġ@ author Ġhc any z Ċ Ġ* Ċ Ġ* ĠLifecycle Owner çļĦ ä½¿çĶ¨ æĸ¹å¼ı åıĤèĢĥ android x . lifecycle . Lifecycle Observer Ċ Ġ* Ġholder . get Lifecycle (). add Observer ( new ĠLifecycle Observer ()) Ċ Ġ* Ġclass ĠLifecycle Observer Ġ{ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ CREATE ) Ġxxx {}} Ċ Ġ* Ċ Ġ* ĠéľĢè¦ģ ä¾Ŀèµĸ Ġk apt Ġdeps . android . lifecycle Compiler Ġï¼Į èĩªåĬ¨ çĶŁæĪĲ Ġxxx _ Lifecycle Observer Test _ Lifecycle Adapter Ċ Ġ*/ Ċ open Ġclass ĠZ ViewHolder < DATA Ġ: ĠAny > Ġinternal Ġconstructor ( protected Ġval ĠmContext : ĠContext , Ġprivate Ġval Ġm Root View : ĠView ) Ġ: ĠLifecycle Owner Ġ{ ĊĊĠĠĠ Ġconstructor ( context : ĠContext , Ġ@ Layout Res Ġlayout Id : ĠInt ) Ġ: Ġthis ( context , ĠView . inflate ( context , Ġlayout Id , Ġnull )) ĊĊĠĠĠ Ġconstructor ( parent : ĠViewGroup , Ġ@ Layout Res Ġlayout Id : ĠInt ) Ġ: Ġthis ( parent . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( layout Id , Ġparent , Ġfalse ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġre cyclerView Holder : ĠZ RecyclerView Holder < DATA > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠZ RecyclerView Holder < DATA >( this , Ġm Root View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġupdate ( data : ĠDATA , Ġpayload s : ĠList < Any >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . update ( data , Ġpayload s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Z ViewHolder . perform Update ( data , Ġpayload s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Re cyc led () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Z ViewHolder . on View Re cyc led () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġm Data : ĠDATA ĊĊĠĠĠ Ġ// çĶ¨äºİ ä¼łéĢĴ äºĭä»¶ æºĲ åĴĮ åħ¶ä»ĸ æ¶Īæģ¯ ĊĠĠĠ Ġvar Ġm ViewHolder Helper : ĠViewHolder Helper ? Ġ= Ġnull ĊĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġz Adapter : ĠZ Adapter < out ĠI Holder Creator Name > ĊĊĠĠĠ Ġprivate Ġvar Ġm Lifecycle Registry : ĠLifecycle Registry ĊĊĠĠĠ Ġ// éľĢè¦ģ this å¯¹è±¡ æŀĦéĢł åĩ½æķ° èµ° å®Į æīįèĥ½ è¿Ľè¡Į init ĊĠĠĠ Ġinternal Ġval Ġinit Task Ġby Ġlazy Ġ{ Ġinit () Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit View ( m Root View ) ĊĠĠĠĠĠĠĠ Ġinit Listener ( m Root View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Root View . add On Attach State ChangeListener ( object Ġ: ĠView . On Attach State ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Z ViewHolder . on View Attached To Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Lifecycle Registry (). handle Lifecycle Event ( Lifecycle . Event . ON _ RE SU ME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Lifecycle Registry (). handle Lifecycle Event ( Lifecycle . Event . ON _ PAUSE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Z ViewHolder . on View Detached From Window () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Lifecycle Registry (). handle Lifecycle Event ( Lifecycle . Event . ON _ STOP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Lifecycle Registry Ġ= ĠLifecycle Registry ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġinit View ( root View : ĠView ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġinit Listener ( root View : ĠView ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġprotected Ġopen Ġfun Ġupdate ( data : ĠDATA , Ġpayload s : ĠList < Any > Ġ= Ġarray ListOf ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Data Ġ= Ġdata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġon View Re cyc led () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġon View Attached To Window () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġon View Detached From Window () Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Lifecycle (): ĠLifecycle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Lifecycle Registry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġget Lifecycle Registry (): ĠLifecycle Registry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Lifecycle Registry ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġroot View (): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Task ĊĠĠĠĠĠĠĠ Ġreturn Ġm Root View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠView > ĠfindViewById (@ Id Res Ġid : ĠInt ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroot View (). findViewById ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Self 2 ViewGroup ( view Group : ĠViewGroup ): ĠZ ViewHolder < DATA > Ġ{ ĊĠĠĠĠĠĠĠ Ġview Group . addView ( root View ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġperform Update ( data : ĠDATA , Ġpayload s : ĠList < Any > Ġ= Ġarray ListOf ()): ĠZ ViewHolder < DATA > Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate ( data , Ġpayload s ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ }