package Ġcom . recyclerview builder . library Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . databinding . ViewData Binding Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ Ċ class ĠBinding Adapter Ġ: ĠRecyclerView . Adapter < Binding Adapter . Binding ViewHolder >(), ĠBase Adapter Interface Ġ{ ĊĠĠĠ Ġoverride Ġvar Ġview Items ArrayList Ġ= ĠView Item ArrayList () ĊĊĠĠĠ Ġprivate Ġvar Ġon Item Click Block : Ġ(( View , ĠView Item Represent able ?, ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Item Long Click Block : Ġ(( View , ĠView Item Represent able ?, ĠInt ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġset On Item Click ( block : Ġ( item View : ĠView , Ġmodel : ĠView Item Represent able ?, Ġposition : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Item Click Block Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Item Long Click ( block : Ġ( item View : ĠView , Ġmodel : ĠView Item Represent able ?, Ġposition : ĠInt ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Item Long Click Block Ġ= Ġblock ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( view Items ArrayList [ position ] Ġ! is ĠBinding View Item < *, Ġ* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠThrowable (" View Item Ġtype Ġmismatch , Ġitem Ġshould Ġbe Ġof Ġtype ĠBinding View Item ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview Items ArrayList [ position ]. layout ResourceId ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠBinding ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBinding ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠData Binding Util . inflate ( LayoutInflater . from ( parent . context ), Ġview Type , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġview Items ArrayList . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠBinding ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ( view Items ArrayList [ holder . adapter Position ] Ġas ĠBinding View Item < View Item Represent able , ĠView Data Binding >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind ( holder . binding , Ġholder . adapter Position ) ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Click Block ?. invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Items ArrayList [ holder . adapter Position ]. data Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOn Long ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Item Long Click Block ?. invoke ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Items ArrayList [ holder . adapter Position ]. data Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠBinding ViewHolder ( ĊĠĠĠĠĠĠĠ Ġval Ġbinding : ĠView Data Binding ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( binding . root ) Ċ }