package Ġxyz . s ke ther . rad iline . ui . main Ċ Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġxyz . s ke ther . rad iline . domain . Station Ċ import Ġxyz . s ke ther . rad iline . ui . base . new ViewHolder Ċ import Ġkotlin . math . min Ċ Ċ class ĠTop St ations Adapter ( private Ġval Ġcallback : ĠCallback ) Ġ: ĠRecyclerView . Adapter < Station Main VH >() Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġitems Ġ= Ġmutable ListOf < Station Main Item >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠStation Main VH Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnew ViewHolder ( parent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠStation Main VH , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . init ( getItem ( position ), Ġthis :: on Station Clicked ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġitems . size ĊĊĠĠĠ Ġfun Ġupdate Data ( updated St ations : ĠList < Station >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġin consistency Pos Ġ= Ġmin ( items . size , Ġupdated St ations . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġin consistency Pos ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġitems [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstation Ġ= Ġupdated St ations [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item . station Ġ!= Ġstation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin consistency Pos Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( in consistency Pos Ġ< Ġitems . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġold Ġitems . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems ToRemove Ġ= Ġitems . sub List ( in consistency Pos , Ġitems . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitems ToRemove Size Ġ= Ġitems ToRemove . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems ToRemove . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Removed ( in consistency Pos , Ġitems ToRemove Size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( in consistency Pos Ġ< Ġupdated St ations . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInsert Ġnew Ġstations . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew St ations Ġ= Ġupdated St ations . sub List ( in consistency Pos , Ġupdated St ations . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . addAll ( new St ations . map Ġ{ ĠStation Main Item ( it ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify Item Range Inserted ( in consistency Pos , Ġnew St ations . size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetItem ( position : ĠInt ): ĠStation Main Item Ġ= Ġitems [ position ] ĊĊĠĠĠ Ġprivate Ġfun Ġon Station Clicked ( item : ĠStation Main Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback . on Station Selected ( item . station ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Station Selected ( station : ĠStation ) ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ