/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . hyper aware . android . firebase jet pack . activity . mult itr ack err v Ċ Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . hyper aware . android . firebase jet pack . databinding . Stock Price ListItem Binding Ċ import Ġcom . hyper aware . android . firebase jet pack . view model . Stock Price Display Or Exception Ċ import Ġcom . hyper aware . android . firebase jet pack . view model . Stock Price ViewModel Ċ Ċ internal Ġclass ĠSto cks RecyclerView Adapter ( ĊĠĠĠ Ġprivate Ġval Ġstock Price ViewModel : ĠStock Price ViewModel , ĊĠĠĠ Ġprivate Ġval Ġlifecycle Owner : ĠLifecycle Owner , ĊĠĠĠ Ġprivate Ġval Ġitem ClickListener : ĠItem ClickListener < Stock ViewHolder > Ċ ) Ġ: ĠRecyclerView . Adapter < Stock ViewHolder >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Sto cks RV Adapter " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġall Tick ers List Ġ= Ġstock Price ViewModel . all Tick ers . toList () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠStock ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUsing Ġdata Ġbinding Ġon Ġthe Ġindividual Ġviews ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠStock Price ListItem Binding . inflate ( in flater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠStock ViewHolder ( binding ) ĊĠĠĠĠĠĠĠ Ġholder . item ClickListener Ġ= Ġitem ClickListener ĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠStock ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġticker Ġ= Ġall Tick ers List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . binding . tv Ticker . text Ġ= Ġticker ĊĠĠĠĠĠĠĠ Ġholder . binding . tv Price . text Ġ= Ġ" ..." ĊĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġa Ġview Ġgets Ġbound , Ġobserve Ġthe Ġstock s Ġchanges , Ġand Ġupdate Ġthe Ġview ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠObserver < Stock Price Display Or Exception > Ġ{ Ġstock Price Display Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stock Price Display Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stock Price Display . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . stock Price Ġ= Ġstock Price Display . data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( stock Price Display . exception Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Ob served Ġunexpected Ġexception ", Ġstock Price Display . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Handle Ġthe Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstock LiveData Ġ= Ġstock Price ViewModel . get Stock LiveData ( ticker ) ĊĠĠĠĠĠĠĠ Ġstock LiveData . observe ( lifecycle Owner , Ġobserver ) ĊĊĠĠĠĠĠĠĠ Ġholder . ticker Ġ= Ġticker ĊĠĠĠĠĠĠĠ Ġholder . stock Price LiveData Ġ= Ġstock LiveData ĊĠĠĠĠĠĠĠ Ġholder . observer Ġ= Ġobserver ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠStock ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġa Ġview Ġscroll s Ġaway , Ġstop Ġob serving Ġthe Ġstock Ġchanges ĊĠĠĠĠĠĠĠ Ġholder . stock Price LiveData !!. remove Observer ( holder . observer !! ) ĊĠĠĠĠĠĠĠ Ġholder . stock Price LiveData Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġholder . observer Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġall Tick ers List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġinterface ĠItem ClickListener < Stock ViewHolder > Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Item Click ( holder : ĠStock ViewHolder ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ