package Ġcom . phil soft . metro trip per . app . drawer Ċ Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . jak ew h art on . r xb ind ing 2 . view . Rx View Ċ import Ġcom . phil soft . metro trip per . R Ċ import Ġcom . phil soft . metro trip per . model . Stop Ċ import Ġcom . phil soft . metro trip per . utils . inflate ĊĊ Ċ class ĠStop ListAdapter Ġ: ĠRecyclerView . Adapter < RecyclerView . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠVIEW _ TYPE _ SEARCH Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠVIEW _ TYPE _ STOP Ġ= Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġitems Ġ= ĠArrayList < Stop >() ĊĠĠĠ Ġvar Ġselected Stop Id : ĠLong Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġstop Se ar ched Listener : Ġ( Long ) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠ Ġvar Ġstop Selected Listener : Ġ( Stop ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( view Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ SEARCH Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsearch View Ġ= Ġparent . inflate ( R . layout . search _ drawer _ item , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= ĠSearch ViewHolder ( search View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . search Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Until ( Rx View . det aches ( parent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġstop Id Ġ-> Ġstop Se ar ched Listener ( stop Id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawer Item View Ġ= Ġparent . inflate ( R . layout . stop _ drawer _ item , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= ĠStop ViewHolder ( drawer Item View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . click Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take Until ( Rx View . det aches ( parent )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġadapter Position Ġ-> Ġitems [ adapter Position Ġ- Ġ 1 ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġstop Ġ-> Ġstop Selected Listener ( stop ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( position Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ SEARCH ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ STOP ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( getItem ViewType ( position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVIEW _ TYPE _ STOP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstop Ġ= Ġitems [ position Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Stop Row ( holder Ġas ĠStop ViewHolder , Ġstop ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Stop Row ( holder : ĠStop ViewHolder , Ġstop : ĠStop ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( stop Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Selected Ġ= Ġstop . stop Id Ġ== Ġselected Stop Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . render ( stop , Ġis Selected ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size Ġ+ Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Stops ( stops : ĠList < Stop >) Ġ{ ĊĠĠĠĠĠĠĠ Ġitems . clear () ĊĠĠĠĠĠĠĠ Ġitems . addAll ( stops ) ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} Ċ Ċ } Ċ