package Ġcom . mor c ine k . recyclerview Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView ĊĊ Ċ class ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ċ Ċ fun Ġ< T > Ġstatic Adapter ( items : ĠList < T >, Ġbody : ĠF Adapter < T >. () Ġ-> ĠUnit ) Ġ= ĠStatic Adapter ( items ). apply ( body ) Ċ Ċ class ĠStatic Adapter < T >( private Ġval Ġitems : ĠList < T >) Ġ: ĠF Adapter < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ) Ġ= Ġitems [ position ] ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġitems . size Ċ } Ċ Ċ abstract Ġclass ĠF Adapter < T > Ġ: ĠRecyclerView . Adapter < ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġres Id : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠonCreate View : Ġ(( ViewGroup , ĠInt ) Ġ-> ĠView ) Ġ= ĊĠĠĠĠĠĠĠ Ġ{ Ġparent , Ġ_ Ġ-> ĠLayoutInflater . from ( parent . context ). inflate ( res Id , Ġparent , Ġfalse ). apply ( on View Created ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġon View Created : Ġ( View . () Ġ-> ĠUnit ) Ġ= Ġ{ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġon BindView : Ġ( View .( Int , ĠT ) Ġ-> ĠUnit ) Ġ= Ġ{ Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠ Ġprivate Ġvar Ġon Bind Payload s : Ġ( View .( Int , ĠT , ĠMutable List < Any >) Ġ-> ĠUnit ) Ġ= Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> Ġ} ĊĠĠĠ Ġprivate Ġvar Ġon Detached : Ġ( View . () Ġ-> ĠUnit ) Ġ= Ġ{ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun ĠgetItem ( position : ĠInt ): ĠT ĊĊĠĠĠ Ġfun Ġres Id ( res Id : ĠInt , Ġon View Created : ĠView . () Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . res Id Ġ= Ġres Id ĊĠĠĠĠĠĠĠ Ġthis . on View Created Ġ= Ġon View Created ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonCreate View ( onCreate View : Ġ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ-> ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . onCreate View Ġ= ĠonCreate View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Bind ( on BindView : ĠView .( position : ĠInt , Ġitem : ĠT ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on BindView Ġ= Ġon BindView ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Bind Payload s ( on Bind Payload s : ĠView .( position : ĠInt , Ġitem : ĠT , Ġpayload s : ĠMutable List < Any >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Bind Payload s Ġ= Ġon Bind Payload s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Detached ( on Detached : ĠView . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Detached Ġ= Ġon Detached ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠView > Ġon BindView ( on BindView : ĠV .( position : ĠInt , Ġitem : ĠT ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Bind ( on BindView Ġas ĠView .( Int , ĠT ) Ġ-> ĠUnit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠView > Ġon BindView Payload s ( on Bind Payload s : ĠV .( position : ĠInt , Ġitem : ĠT , Ġpayload s : ĠMutable List < Any >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Bind Payload s ( on Bind Payload s Ġas ĠView .( Int , ĠT , ĠMutable List < Any >) Ġ-> ĠUnit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< V Ġ: ĠView > Ġon View Detached ( on View Detached : ĠV . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Detached Ġ= Ġon View Detached Ġas ĠView . () Ġ-> ĠUnit ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ) Ġ= ĠViewHolder ( onCreate View ( parent , Ġview Type )) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ= Ġholder . item View . on BindView ( position , ĠgetItem ( position )) ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt , Ġpayload s : ĠMutable List < Any >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( payload s . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Bind ViewHolder ( holder , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View . on Bind Payload s ( position , ĠgetItem ( position ), Ġpayload s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Detached From Window ( holder : ĠViewHolder ) Ġ= Ġholder . item View . on Detached () Ċ } Ċ