package Ġdid . chr is . alt . ui . constraint ui . tracker List . tracker ListAdapter Ċ Ċ import Ġandroid . support . constraint . Constraint Layout Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Filter Ċ import Ġandroid . widget . Filter able Ċ import Ġdid . chr is . alt . R Ċ import Ġdid . chr is . alt . configuration . ALT SharedPreferences Ċ import Ġdid . chr is . alt . configuration . Indicator Custom iser Ċ import Ġdid . chr is . alt . data . interfaces . as sess Change Ċ import Ġdid . chr is . alt . data . tracker ListItem . Tracker ListItem Ċ import Ġdid . chr is . alt . injection . components . Presenter Component Ċ import Ġrx . subjects . Publish Subject Ċ Ċ class ĠTracker ListAdapter ( presenter Component : ĠPres enter Component , Ġprivate Ġval Ġscreen Width : ĠInt ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < RecyclerView . ViewHolder >(), ĊĠĠĠ ĠTracker Adapter Contract View , ĠFilter able Ġ{ ĊĊĠĠĠ Ġ// ĠProperties ĊĠĠĠ Ġoverride Ġvar Ġtracker Entries : ĠMutable List < Tracker ListItem > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Tracker Entries Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġno Entries Found . onNext ( value . isEmpty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġfiltered Tracker Entries Ġ= Ġtracker Entries ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠRX ĠActions ĊĠĠĠ Ġprivate Ġvar Ġtracker Entry Selected : ĠPublish Subject < Tracker ListItem > Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġprivate Ġvar Ġno Entries Found : ĠPublish Subject < Boolean > Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġprivate Ġvar Ġis Refresh ing : ĠPublish Subject < Boolean > Ġ= ĠPublish Subject . create () ĊĠĠĠ Ġoverride Ġfun Ġon Refresh StateChange () Ġ= Ġis Refresh ing . as Observable () ĊĠĠĠ Ġoverride Ġfun Ġon Tracker Entry Selected () Ġ= Ġtracker Entry Selected . as Observable () ĊĠĠĠ Ġoverride Ġfun Ġon No Entries Present () Ġ= ĊĠĠĠĠĠĠĠ ĠPair ( no Entries Found . as Observable (), Ġtracker Entries . isEmpty ()) ĊĊĠĠĠ Ġprivate Ġvar Ġtracker Adapter Presenter Ġ= Ġpresenter Component . provide Tracker Adapter Presenter () ĊĠĠĠ Ġprivate Ġval Ġindicator Custom iser Ġ= ĠIndicator Custom iser ( ALT SharedPreferences . get Icon Pack ()) ĊĊĠĠĠ Ġ// ĠLifecycle ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtracker Adapter Presenter . attach View ( this ) ĊĠĠĠĠĠĠĠ Ġtracker Adapter Presenter . initial ise () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= Ġlayout Inflater . inflate ( R . layout . item _ tracker _ list , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ ĠitemView . layout Params . width Ġ= Ġscreen Width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġreturn ĠTracker ListView Holder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġtracker Adapter Presenter . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRecyclerView . ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder Ġ= Ġholder Ġas ĠTracker ListView Holder ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġfiltered Tracker Entries [ position ] ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= Ġentry . as sess Change () ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠviewHolder . indicator . context ĊĠĠĠĠĠĠĠ ĠviewHolder . coin Name . text Ġ= Ġentry . name ĊĠĠĠĠĠĠĠ ĠviewHolder . coin Symbol . text Ġ= Ġentry . symbol Formatted ĊĠĠĠĠĠĠĠ ĠviewHolder . current Price . text Ġ= Ġentry . getCurrent Asset Price Formatted () ĊĠĠĠĠĠĠĠ ĠviewHolder . d ollar Cost Average . text Ġ= Ġentry . d ollar Cost Average Formatted ĊĠĠĠĠĠĠĠ ĠviewHolder . current Profit . setTextColor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Custom iser . getColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry . as sess Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset Amount Values ( view Holder , Ġentry ) ĊĠĠĠĠĠĠĠ ĠviewHolder . indicator . setImage Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Custom iser . get Icon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstatus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġset OnClickListener ( view Holder . item Content , Ġentry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPrivate ĠFunctions ĊĠĠĠ Ġprivate Ġfun Ġset Amount Values ( ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠTracker ListView Holder , ĊĠĠĠĠĠĠĠ Ġentry : ĠTracker ListItem ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ALT SharedPreferences . getValues Hidden ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Hidden Values ( view Holder , Ġentry ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset Actual Values ( view Holder , Ġentry ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠOverrides ĊĠĠĠ Ġoverride Ġfun Ġget Filter (): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcallback Ġ= Ġmake Tracker Filter Callback () ĊĠĠĠĠĠĠĠ Ġreturn ĠTracker Filter ( tracker Entries , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġfiltered Tracker Entries . size ĊĊĠĠĠ Ġoverride Ġfun Ġshow No Tracker Entries Message () Ġ= Ġno Entries Found . onNext ( true ) ĊĊĠĠĠ Ġoverride Ġfun Ġdid Have Entries () Ġ= Ġno Entries Found . onNext ( false ) ĊĊĠĠĠ Ġoverride Ġfun Ġinitialise Tracker List () Ġ= Ġtracker Adapter Presenter . initial ise () ĊĊĠĠĠ Ġoverride Ġfun Ġshow Loading () Ġ= Ġis Refresh ing . onNext ( true ) ĊĊĠĠĠ Ġoverride Ġfun Ġhide Loading () Ġ= Ġis Refresh ing . onNext ( false ) ĊĊĠĠĠ Ġoverride Ġfun Ġshow Error ( string Id : ĠInt ?) Ġ{} ĊĊĠĠĠ Ġoverride Ġfun Ġfilter For ( input : ĠString ) Ġ= Ġfilter . filter ( input ) ĊĊĠĠĠ Ġ// ĠPrivate ĠFunctions ĊĠĠĠ Ġprivate Ġfun Ġset OnClickListener ( item Content : ĠConstraint Layout , Ġentry : ĠTracker ListItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġitem Content . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtracker Entry Selected . onNext ( entry ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmake Tracker Filter Callback (): ĠTracker Filter Callback Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠTracker Filter Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġpublish Results ( filter edList : ĠMutable List < Tracker ListItem >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfiltered Tracker Entries Ġ= Ġfilter edList ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Hidden Values ( ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠTracker ListView Holder , ĊĠĠĠĠĠĠĠ Ġentry : ĠTracker ListItem ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠviewHolder . getContext () ĊĠĠĠĠĠĠĠ Ġval Ġhidden Value Ġ= ĠviewHolder . getContext (). getString ( R . string . hidden _ values ) ĊĠĠĠĠĠĠĠ ĠviewHolder . current Value . text Ġ= Ġhidden Value ĊĠĠĠĠĠĠĠ ĠviewHolder . number Owned . text Ġ= Ġhidden Value ĊĠĠĠĠĠĠĠ ĠviewHolder . current Profit . text Ġ= Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . item _ tracker Entry _ change , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhidden Value , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . percentage Change Formatted ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Actual Values ( ĊĠĠĠĠĠĠĠ ĠviewHolder : ĠTracker ListView Holder , ĊĠĠĠĠĠĠĠ Ġentry : ĠTracker ListItem ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= ĠviewHolder . getContext () ĊĠĠĠĠĠĠĠ ĠviewHolder . current Value . text Ġ= Ġentry . current Price USD Formatted ĊĠĠĠĠĠĠĠ ĠviewHolder . number Owned . text Ġ= Ġentry . number Owned Formatted ĊĠĠĠĠĠĠĠ ĠviewHolder . current Profit . text Ġ= Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . item _ tracker Entry _ change , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . get Profit Loss Formatted (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry . percentage Change Formatted ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ