package Ġcom . j ames j mt aylor . we g 2 0 1 5 . equipment Tabs Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Lifecycle Observer Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġcom . j ames j mt aylor . we g 2 0 1 5 . models . Equipment Ċ import Ġcom . j ames j mt aylor . we g 2 0 1 5 . models . Equipment Type Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj t aylor Ġon Ġ 2 / 1 0 / 1 8 . Ċ Ġ*/ Ċ class ĠE quipment ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ), ĠLifecycle Observer Ġ{ ĊĠĠĠ Ġval Ġrepo Ġ= ĠE quipment Repository () ĊĠĠĠ Ġval Ġequipment Ġ= ĠMed iator LiveData < List < Equipment >>() Ġ// Mediator Ġallows Ġthis Ġclass Ġto Ġpass Ġthe ĠRoom LiveData Ġfrom Ġthe Ġrepo Ġclass Ġto Ġthe ĠView ĊĠĠĠ Ġval ĠisLoading Ġ= ĠMed iator LiveData < Boolean >() ĊĠĠĠ Ġvar Ġfilter Results : ĠList < Equipment >? Ġ= ĠArrayList < Equipment >() ĊĠĠĠ Ġprivate Ġvar Ġselected Type : ĠE quipment Type Ġ= ĠE quipment Type . LAND ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠisLoading . add Source ( repo . isLoading ) Ġ{ ĠisLoading . value Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= ĠgetCurrent Source () ĊĠĠĠĠĠĠĠ Ġif Ġ( source Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequipment . add Source ( source ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġequipment . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġselect Type ( type : ĠE quipment Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġequipment . remove Source ( getCurrent Source () Ġ?: Ġreturn ) ĊĠĠĠĠĠĠĠ Ġselected Type Ġ= Ġtype ĊĊĠĠĠĠĠĠĠ Ġequipment . add Source ( getCurrent Source () Ġ?: Ġreturn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequipment . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Results Ġ= Ġit Ġ// resets Ġfilter Ġresults ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Source (): ĠLive Data < List < Equipment >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdata : ĠLive Data < *> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( selected Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE quipment Type . LAND Ġ-> Ġdata Ġ= Ġrepo . get Land () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE quipment Type . SE A Ġ-> Ġdata Ġ= Ġrepo . get Sea () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE quipment Type . AIR Ġ-> Ġdata Ġ= Ġrepo . get Air () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE quipment Type . G UN Ġ-> Ġdata Ġ= Ġrepo . get Gun () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE quipment Type . ALL Ġ-> Ġdata Ġ= Ġrepo . getAll () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdata Ġas ? ĠLive Data < List < Equipment >> ĊĠĠĠ Ġ} Ċ }