package Ġorg . ion project . android . search Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . paging . Paged ListAdapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlinx . android . synt hetic . main . list _ item _ search _ result . view .* Ċ import Ġorg . ion project . android . R Ċ import Ġorg . ion project . android . common . model . SearchResult Ċ Ċ class ĠSearch Results Adapter ( ĊĠĠĠ Ġprivate Ġval Ġsearch Results ViewModel : ĠSearch Results ViewModel , ĊĠĠĠ Ġprivate Ġval ĠonClick Listener : Ġ( SearchResult ) Ġ-> ĠUnit Ċ ) Ġ: ĊĠĠĠ ĠP aged ListAdapter < SearchResult , ĠSearch Results Adapter . SearchResults ViewHolder >( DIFF _ CALLBACK ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDIFF _ CALLBACK Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < SearchResult >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠSearch Result , Ġnew Item : ĠSearch Result ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . resource URI Ġ== Ġnew Item . resource URI ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠSearch Result , Ġnew Item : ĠSearch Result ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġ== Ġnew Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠSearch Results ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . list _ item _ search _ result , Ġparent , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSearch Results ViewHolder ( view , ĠonClick Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠSearch Results ViewHolder , Ġposition : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠ ĠgetItem ( position ). let Ġ{ Ġif Ġ( it Ġ!= Ġnull ) Ġholder . bind To ( it ) Ġ} ĊĊĠĠĠ Ġclass ĠSearch Results ViewHolder ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠonClick Listener : Ġ( SearchResult ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsearch Result Card View Ġ= Ġview . material card view _ search _ result ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsearch Result Type TextView Ġ= Ġview . text view _ search _ result _ type ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsearch Result Text TextView Ġ= Ġview . text view _ search _ result _ text ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind To ( search Result : ĠSearch Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Type TextView . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result . type . getName From Resource ( item View . resources ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Text TextView . text Ġ= Ġsearch Result . properties [" name "] Ġas ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Result Card View . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Listener ( search Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }