package Ġcom . adam . leo . core Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . ListAdapter Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . view binding . View Binding Ċ import Ġcom . adam . leo . Le o Adapter Ċ import Ġcom . adam . leo . Le o Item Bind Listener Ċ import Ġcom . adam . leo . Le o Item Binding ĊĊ Ċ internal Ġclass ĠLe o Adapter Sync < T , ĠVB Ġ: ĠView Binding >( ĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġprivate Ġval Ġget View Binding : ĠLe o Item Binding < VB >, ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠLe o Item Bind Listener < T , ĠVB > Ċ ) Ġ: ĠRecyclerView . Adapter < Base VH < T , ĠVB >> (), ĠLe o Adapter < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ data : ĠList < T > Ġ= Ġempty List () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase VH < T , ĠVB > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġget View Binding ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBase VH ( binding , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġ_ data . size ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase VH < T , ĠVB >, Ġposition : ĠInt ): ĠUnit Ġ= Ġholder ( position , Ġ_ data [ position ]) ĊĊĠĠĠ Ġoverride Ġfun Ġset List ( data : ĠList < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ data Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ internal Ġclass ĠLe o Adapter Async < T , ĠVB Ġ: ĠView Binding >( ĊĠĠĠ Ġprivate Ġval Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġdiff Util : ĠDiff Util . Item Callback < T >, ĊĠĠĠ Ġprivate Ġval Ġget View Binding : ĠLe o Item Binding < VB >, ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠLe o Item Bind Listener < T , ĠVB > Ċ ) Ġ: ĠList Adapter < T , ĠBase VH < T , ĠVB >>( diff Util ), ĠLe o Adapter < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBase VH < T , ĠVB > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= Ġget View Binding ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠBase VH ( binding , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset List ( data : ĠList < T >): ĠUnit Ġ= Ġsubmit List ( data ) ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBase VH < T , ĠVB >, Ġposition : ĠInt ): ĠUnit Ġ= Ġholder ( position , ĠgetItem ( position )) Ċ }