package Ġcom . must afa . movie guide app . view . adapter Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . databinding . Data Binding Component Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġcom . must afa . movie guide app . R Ċ import Ġcom . must afa . movie guide app . databinding . Item Tv Search Binding Ċ import Ġcom . must afa . movie guide app . models . entity . Tv Ċ import Ġcom . must afa . movie guide app . view . ui . common . App Executors Ċ import Ġcom . must afa . movie guide app . view . ui . common . Data Bound ListAdapter Ċ Ċ class ĠT v Search ListAdapter ( ĊĠĠĠ Ġapp Executors : ĠApp Executors , ĊĠĠĠ Ġprivate Ġval Ġdata Binding Component : ĠData Binding Component , ĊĠĠĠ Ġprivate Ġval Ġtv OnClick Callback : Ġ(( Tv ) Ġ-> ĠUnit )? Ċ ) Ġ: ĠData Bound ListAdapter < Tv , ĠItem Tv Search Binding >( ĊĠĠĠ Ġapp Executors Ġ= Ġapp Executors , ĊĠĠĠ Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Tv >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠT v , Ġnew Item : ĠT v ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠT v , Ġnew Item : ĠT v ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item Ġ== Ġ( new Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Binding ( parent : ĠViewGroup ): ĠItem Tv Search Binding Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . inflate < Item Tv Search Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ tv _ search , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Binding Component ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġbinding . root . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv OnClick Callback ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( binding : ĠItem Tv Search Binding , Ġitem : ĠT v ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . tv Ġ= Ġitem ĊĠĠĠ Ġ} Ċ }