package Ġcom . letter . days . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . Observable List Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . letter . days . BR Ċ import Ġcom . letter . presenter . Item Click Presenter Ċ import Ġcom . letter . presenter . Item Long Click Presenter Ċ Ċ /** Ċ Ġ* ĠData Bind Ġ åĪĹè¡¨ éĢĤ éħį åĻ¨ Ċ Ġ* Ġ@ param ĠT Ġitem ç±»åŀĭ Ċ Ġ* Ġ@ property Ġcontext ĠContext Ġcontext Ċ Ġ* Ġ@ property Ġlayout Res ĠInt Ġ å¸ĥå±Ģ èµĦæºĲ id Ċ Ġ* Ġ@ property Ġlist ĠObservable List < T > Ġæķ°æį® åĪĹè¡¨ Ċ Ġ* Ġ@ property Ġitem Click Presenter ĠItem Click Presenter ? Ġitem çĤ¹åĩ» å¤ĦçĲĨ Ċ Ġ* Ġ@ property Ġitem Long Click Presenter ĠItem Long Click Presenter ? Ġitem éķ¿ æĮī å¤ĦçĲĨ Ċ Ġ* Ġ@ constructor Ġ æŀĦéĢł ä¸Ģä¸ª éĢĤ éħį åĻ¨ Ċ Ġ* Ċ Ġ* Ġ@ author ĠLetter ( never mind zz t @ gmail . com ) Ċ Ġ* Ġ@ since Ġ 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠBinding View Adapter < T > Ċ constructor ( private Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Layout Res Ġprivate Ġval Ġlayout Res : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlist : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġvm : ĠViewModel ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġitem Click Presenter : ĠItem Click Presenter ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġitem Long Click Presenter : ĠItem Long Click Presenter ? Ġ= Ġnull ) ĊĠĠĠ Ġ: ĠRecyclerView . Adapter < Binding View Adapter . Binding ViewHolder < ViewData Binding >>() Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlist ?. add On List Changed Callback ( object Ġ: ĠObservable List . On List Changed Callback < Observable List < T >>() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonChanged ( sender : ĠObservable List < T > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Removed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Start : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( position Start , Ġitem Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Moved ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Position : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Moved ( from Position , Ġto Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Inserted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Start : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( position Start , Ġitem Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Range Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsender : ĠObservable List < T > ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Start : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Count : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Changed ( position Start , Ġitem Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( ĊĠĠĠĠĠĠĠ Ġparent : ĠViewGroup , ĊĠĠĠĠĠĠĠ Ġview Type : ĠInt ĊĠĠĠ Ġ) Ġ= ĠBinding ViewHolder ( ĊĠĠĠĠĠĠĠ ĠData Binding Util . inflate < ViewData Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Res , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( ĊĠĠĠĠĠĠĠ Ġholder : ĠBinding ViewHolder < ViewData Binding >, ĊĠĠĠĠĠĠĠ Ġposition : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . adapter , Ġthis ) ĊĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . list , Ġlist ) ĊĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . position , Ġposition ) ĊĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . vm , Ġvm ) ĊĠĠĠĠĠĠĠ Ġif Ġ( item Click Presenter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . item Click Presenter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Click Presenter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( item Long Click Presenter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . set Variable ( BR . item Long Click Presenter , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem Long Click Presenter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . binding . execute Pending Bindings () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġlist ?. size Ġ?: Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠData Binding Ġ åĪĹè¡¨ éĢĤ éħį åĻ¨ ViewHolder ĊĠĠĠĠ Ġ* Ġ@ param ĠT Ġ: ĠView Data Binding Ġæķ°æį® ç»ĳå®ļ ç±»åŀĭ ĊĠĠĠĠ Ġ* Ġ@ property Ġbinding ĠT Ġæķ°æį® ç»ĳå®ļ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ constructor Ġ æŀĦéĢł ä¸Ģä¸ª ViewHolder ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ author ĠLetter ( never mind zz t @ gmail . com ) ĊĠĠĠĠ Ġ* Ġ@ since Ġ 1 . 0 . 0 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠBinding ViewHolder < out ĠT Ġ: ĠView Data Binding > ĊĠĠĠ Ġconstructor ( val Ġbinding Ġ: ĠT ) ĊĠĠĠĠĠĠĠ Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ }