package Ġde . aro io . application . ns d . flow Ċ Ċ import Ġandroid . net . ns d . N sd Service Info Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġkotlin . properties . Deleg ates Ċ Ċ class ĠDiscovery Adapter Ġ: ĠRecyclerView . Adapter < Discovery ViewHolder >() Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠRecyclerView . Adapter <* >. auto Notify ( old : ĠList < T >, Ġnew : ĠList < T >, Ġcompare : Ġ( T , ĠT ) Ġ-> ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDiff Util . calculate Diff ( object Ġ: ĠDiff Util . Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompare ( old [ old Item Position ], Ġnew [ new Item Position ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item Position : ĠInt , Ġnew Item Position : ĠInt ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold [ old Item Position ] Ġ== Ġnew [ new Item Position ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Old List Size () Ġ= Ġold . size ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget New List Size () Ġ= Ġnew . size ĊĠĠĠĠĠĠĠ Ġ}). dispatch Updates To ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġitems : ĠList < Discovery Record > Ġby ĠDeleg ates . observable ( emptyList ()) Ġ{ Ġ_, Ġold , Ġnew Ġ-> ĊĠĠĠĠĠĠĠ Ġauto Notify ( old , Ġnew ) Ġ{ Ġleft , Ġright Ġ-> Ġleft . name Ġ== Ġright . name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠDiscovery ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( items [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠDiscovery ViewHolder Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( android . R . layout . simple _ list _ item _ 1 , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠDiscovery ViewHolder ( it ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġfun Ġadd Item ( discovery Record : ĠDiscovery Record ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġitem Count ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems . plus ( discovery Record ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Item ( discovery Record : ĠDiscovery Record ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġitem Count ĊĠĠĠĠĠĠĠ Ġitems Ġ= Ġitems . minus ( discovery Record ) ĊĠĠĠĠĠĠĠ Ġnotify Item Removed ( count ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġitem Count ĊĠĠĠĠĠĠĠ Ġitems Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( 0 , Ġcount ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ class ĠDiscovery ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġname TextView : ĠTextView Ġ= ĠitemView . findViewById ( android . R . id . text 1 ) ĊĊĠĠĠ Ġfun Ġbind ( discovery Record : ĠDiscovery Record ) Ġ{ ĊĠĠĠĠĠĠĠ Ġname TextView . text Ġ= Ġdiscovery Record . name ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ data Ġclass ĠDiscovery Record ( ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString Ċ ) Ċ Ċ fun ĠN sd Service Info . to Discovery Record () Ġ= ĠDiscovery Record ( serviceName )