package Ġz lc . season . s ange Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . recyclerview . widget . RecyclerView . NO _ POSITION Ċ Ċ abstract Ġclass ĠS ange Multi Adapter < T Ġ: ĠS ange Item , ĠV H Ġ: ĠS ange ViewHolder < T >>( dataSource : ĠDataSource < T >, Ġshould Invalidate : ĠBoolean Ġ= Ġtrue ) Ġ: ĊĠĠĠĠĠĠĠ ĠS ange Adapter < T , ĠV H >( dataSource , Ġshould Invalidate ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠV H , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . on Bind ( position , ĠgetItem ( position )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠV H , Ġposition : ĠInt , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( payload s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind ViewHolder ( holder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . on Bind Payload ( position , ĠgetItem ( position ), Ġpayload s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetItem ( position ). view Type () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Attached To Window ( holder : ĠV H ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . check Position Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Attach ( it , ĠgetItem ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( holder : ĠV H ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . check Position Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Detach ( it , ĠgetItem ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠV H ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . check Position Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Re cyc led ( it , ĠgetItem ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< VH Ġ: ĠRecyclerView . ViewHolder > ĠV H . check Position ( block : ĠV H .( Int ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . adapter Position . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= ĠNO _ POSITION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . block ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }