package Ġedu . cal poly . f li pt ed . ui . my Progress . mission Details Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġedu . cal poly . f li pt ed . R Ċ Ċ private Ġconst Ġval ĠMIS SION _ ID _ ARG _ PARAM Ġ= Ġ" Integr ated ĠScience " Ċ Ċ class ĠMis sion Task Fragment () Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠMis sion Task ViewModel ĊĠĠĠ Ġprivate Ġvar Ġmission Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġrefresh Count Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠCustom ListAdapter Task ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter Mission s : ĠCustom ListAdapter Mission s ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Id Ġ= Ġit . getString ( MISSION _ ID _ ARG _ PARAM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= Ġinflater . inflate ( R . layout . mission _ progress _ detail _ fragment , Ġcontainer , Ġfalse ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( require Activity ())[ Mission Task ViewModel :: class . java ] ĊĊĊĠĠĠĠĠĠĠ Ġval ĠlistView Task : ĠListView Ġ= Ġview . findViewById ( R . id . mission _ task _ list _ view ) ĊĠĠĠĠĠĠĠ Ġval Ġmission Title : ĠTextView Ġ= Ġview . findViewById ( R . id . mission _ task _ item _ title ) ĊĠĠĠĠĠĠĠ Ġval ĠlistView Mission : ĠListView Ġ= Ġview . findViewById ( R . id . missions _ container _ list ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Mission : ĠViewGroup Ġ= Ġview . findViewById ( R . id . current _ mission ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Mission Progress : ĠProgress Bar Ġ= Ġcurrent Mission . findViewById ( R . id . mission _ progress ) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Mission Title : ĠTextView Ġ= Ġcurrent Mission . findViewById ( R . id . mission _ item _ text ) ĊĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠCustom ListAdapter Task ( layout Inflater , Ġrequire Context ()) ĊĠĠĠĠĠĠĠ ĠlistView Task . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġadapter Mission s Ġ= ĠCustom ListAdapter Mission s ( layout Inflater , activity ) ĊĠĠĠĠĠĠĠ ĠlistView Mission . adapter Ġ= Ġadapter Mission s ĊĊĠĠĠĠĠĠĠ ĠviewModel . all Mission s . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġprogress Map Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmission Ġ= Ġprogress Map [ mission Id ] ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mission Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrefresh Count Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( refresh Count Ġ< Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . fetch Task Stats () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Mission Task Fragment ", Ġ" Could Ġnot Ġfind Ġmission Ġwith Ġid Ġ$ mission Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Observer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . data Ġ= Ġmission . progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmission Title . text Ġ= Ġmission . mission . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Mission Progress . progress Ġ= Ġmission . progress . count Ġ{ Ġit . submission Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Mission Progress . max Ġ= Ġmission . progress . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Mission Title . text Ġ= Ġmission . mission . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Mission s . data Ġ= Ġprogress Map . values . toList () ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . fetch Task Stats () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( Mission Id : ĠString ) Ġ= ĠMis sion Task Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( MISSION _ ID _ ARG _ PARAM , ĠMis sion Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }