package Ġcom . example . tf g _ ur jc _ app fir str un . Fragments Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Array Adapter Ċ import Ġandroid . widget . Spinner Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Transaction Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . android . vol ley . Auth Failure Error Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . JsonArray Request Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Adapters . My Sector RecyclerView Adapter Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Database . Labs . Sector Lab Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Entities . Activity Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Entities . Lap Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Entities . Sector Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . Entities . Session Ċ import Ġcom . example . tf g _ ur jc _ app fir str un . R Ċ import Ġcom . google . android . material . floating action button . Floating ActionButton Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . text . SimpleDateFormat Ċ Ċ /** Ċ Ġ* ĠA Ġfragment Ġrepresenting Ġa Ġlist Ġof ĠItems . Ċ Ġ*/ Ċ class ĠData Session Fragment ( selected Session : ĠSession ?, Ġactual Week Number : ĠInt ?, Ġactual Session Number : ĠInt ?, Ġlist Activities : ĠArrayList < Activity >): ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġ_ session Ġ= Ġselected Session ĊĠĠĠ Ġprivate Ġvar Ġ_ actual Week Number Ġ= Ġactual Week Number ĊĠĠĠ Ġprivate Ġvar Ġ_ actual Session Number Ġ= Ġactual Session Number ĊĠĠĠ Ġprivate Ġvar Ġ_ list Activities Ġ= Ġlist Activities ĊĊĠĠĠ Ġvar Ġsector Db Instance : ĠS ector Lab ? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠFormat ĠDate Ġ( millis Ġto ĠDate ) ĊĠĠĠ Ġval Ġformat Date Cal ender Ġ= ĠSimpleDateFormat (" dd / MM / yyyy ") ĊĠĠĠ Ġval Ġformat Date Timer Ġ= ĠSimpleDateFormat (" mm : ss ") ĊĊĠĠĠ Ġ// ĠData Ġvariables ĊĠĠĠ Ġvar Ġlist Data Sector s Ġ= ĠArrayList < Sector ?> () ĊĠĠĠ Ġvar Ġselected Activity Id : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġlist L aps : ĠArrayList < Lap > Ġ= Ġarray ListOf () ĊĊĠĠĠ Ġ// ĠFor Ġspinner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmy Spinner : ĠSp inner ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠArray Adapter < Activity > ĊĠĠĠ Ġprivate Ġvar Ġcolumn Count Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ list Activities . clear () ĊĠĠĠĠĠĠĠ ĠgetActivity Context (). on Back Pressed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Count Ġ= Ġit . getInt ( H istorical Training Fragment . ARG _ COLUMN _ COUNT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ data _ session _ list , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġshow Back Button ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInst ancia Ġde ĠTraining DB Ġpara Ġinicial r Ġla Ġbd ĊĠĠĠĠĠĠĠ Ġsector Db Instance Ġ= ĠS ector Lab . get ( context ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġlist Ġof Ġsect ors ĊĠĠĠĠĠĠĠ Ġfill Sector List () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAll Ġinfo Ġsession Ġvariables ĊĠĠĠĠĠĠĠ Ġval Ġsession Day Ġ= Ġview . findViewById ( R . id . tv _ session Day ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġsession Day . text Ġ= Ġformat Date Cal ender . format (_ session !!. session Day ) ĊĠĠĠĠĠĠĠ Ġval Ġactual Week Number Ġ= Ġview . findViewById ( R . id . tv _ number Week ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġactual Week Number . text Ġ= Ġ_ actual Week Number . toString () ĊĠĠĠĠĠĠĠ Ġval Ġactual Session Name Ġ= Ġview . findViewById ( R . id . et _ type Session ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġwhen Ġ(_ actual Session Number ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġactual Session Name . text Ġ= Ġ" SER IES " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġactual Session Name . text Ġ= Ġ" CAR RR ERA ĠC ORT A " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġactual Session Name . text Ġ= Ġ" C ARR ERA ĠL ARG A " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġthe Ġadapter Ġlist ĠS ector s ĊĠĠĠĠĠĠĠ Ġval Ġre cyclerView Ġ= Ġview . findViewById ( R . id . rv _ results List ) Ġas ĠRecyclerView ĊĠĠĠĠĠĠĠ Ġwith ( re cyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolumn Count Ġ<= Ġ 1 Ġ-> ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠGrid LayoutManager ( context , Ġcolumn Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠMy Sector RecyclerView Adapter ( list Data Sector s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠLoad Ġspinner ĊĠĠĠĠĠĠĠ Ġmy Spinner Ġ= Ġview . findViewById < View ? >( R . id . spinner _ activities ) Ġas ĠSp inner ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠArray Adapter < Activity >( context , Ġandroid . R . layout . simple _ spinner _ item , Ġ_ list Activities ) ĊĠĠĠĠĠĠĠ Ġmy Spinner ?. adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġmy Spinner . on ItemSelected Listener Ġ= Ġobject Ġ: ĠAdapter View . On ItemSelected Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Nothing Selected ( p 0 : ĠAdapter View < *> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġdefine Ġyou Ġactions Ġas Ġyou Ġwant ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon ItemSelected ( p 0 : ĠAdapter View < *> ?, Ġp 1 : ĠView ?, Ġposition : ĠInt , Ġp 3 : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġactivity Ġ= Ġmy Spinner . selected Item Ġas ĠActivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Activity Id Ġ= Ġactivity . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Selected ĠActivity ", Ġselected Activity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfab : ĠFloating ActionButton Ġ= Ġview . findViewById ( R . id . floating ActionButton _ addData ) ĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Floating ĠButton ", Ġselected Activity Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo L aps Request ( selected Activity Id , Ġview ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfill Sector List () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġsect ors Ġ= Ġsector Db Instance ?. getS ector By SessionId (_ session ?. sessionId !! ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sect ors Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sect Ġin Ġsect ors ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Data Sector s . add ( sect !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Sector ", Ġsect !!. number Sector . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinfo L aps Request ( id Activity : ĠString , Ġview : ĠView ){ ĊĠĠĠĠĠĠĠ Ġ// ĠREQUEST ĠTO ĠOB TAIN ĠACCESS ĠTOKEN ĊĠĠĠĠĠĠĠ Ġval Ġqueue Ġ= ĠVol ley . new Request Queue ( this . context ) ĊĠĠĠĠĠĠĠ Ġ// ĠURL Ġwhich Ġreturn Ġthe Ġaccess Ġtoken ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" https :// www . str ava . com / api / v 3 / activities /$ id Activity / lap s " ĊĠĠĠĠĠĠĠ ĠLog . i (" URL ĠActivity ĠTest ", Ġurl ) ĊĠĠĠĠĠĠĠ Ġ// ĠRequest Ġa ĠJSON Ġresponse Ġfrom Ġthe Ġprovided ĠURL . ĊĠĠĠĠĠĠĠ Ġval Ġjson Array Request : ĠJson Array Request Ġ= Ġobject Ġ: ĠJson Array Request ( Method . GET , Ġurl , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Listener Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i (" Request ĠAct it iv ites ", Ġ" Response Ġis : Ġ$ response ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġresponse . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġresponse . getJSONObject ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Log . i (" Activity ", Ġitem . get (" id "). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlap Ġ= ĠLap ( item ?. get (" id "). toString (), Ġitem ?. get (" lap _ index ") Ġas ĠInt , Ġitem ?. get (" elapsed _ time ") Ġas ĠInt , Ġitem ?. get (" moving _ time ") Ġas ĠInt , Ġitem ?. get (" distance ") Ġas ĠDouble ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Lap ", Ġlap . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist L aps . add ( lap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" List ĠL aps ", Ġlist L aps . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Data L aps To Database (_ session !!. number Session , Ġview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResponse . Error Listener Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Request ĠError ", Ġ" That Ġdidn 't Ġwork !: Ġ$ error ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġis Ġfor ĠHeaders ĠIf ĠYou ĠN eeded ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Auth Failure Error :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Headers (): ĠMutable Map < String ?, ĠString ?> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġheaders : ĠMutable Map < String ?, ĠString ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġactivity ?. get SharedPreferences (" credentials ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccess _ token Ġ= Ġpreferences ?. getString (" access _ token ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [" ContentType "] Ġ= Ġ" application / json ; Ġcharset = utf 8 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheaders [" Authorization "] Ġ= Ġ" Bearer Ġ$ access _ token " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Header ĠRequest ", Ġheaders . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġheaders ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġrequest Ġto Ġthe ĠRequest Queue . ĊĠĠĠĠĠĠĠ Ġqueue . add ( json Array Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreload Fragment () Ġ{ ĊĠĠĠĠĠĠĠ Ġlist Data Sector s . clear () ĊĠĠĠĠĠĠĠ Ġlist L aps . clear () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Fragment Ġ= Ġfragment Manager !!. find Fragment By Tag (" info Data Fragment ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Transaction : ĠFragment Transaction Ġ= Ġfragment Manager !!. beginTransaction () ĊĠĠĠĠĠĠĠ Ġfragment Transaction . detach ( current Fragment !! ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . attach ( current Fragment !! ) ĊĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Data L aps To Database ( number Session : ĠInt , Ġview : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( number Session ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġupdate Data Series ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġupdate Data Short Run ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 Ġ-> Ġupdate Data Long Run ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Data Series ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list Data Sector s . size Ġ== Ġ( list L aps . size - 2 )/ 2 ) Ġ{ Ġ// ĠSi Ġlas Ġvue lt as - 2 / 2 Ġes Ġdist into Ġque Ġel Ġnumero Ġde Ġsect ores , Ġno Ġes Ġuna Ġser ie Ġcorrect a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpos Lap : ĠInt Ġ= Ġ 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sector : ĠS ector ? Ġin Ġlist Data Sector s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdate Sector : ĠS ector Ġ= Ġsector !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgoal Time Ġ= Ġupdate Sector !!. goal Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġregister Time Ġ= Ġlist L aps [ pos Lap ] !!. moving _ time . to Long () Ġ// ĠLo Ġtransform amos Ġa ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . register Time Ġ= Ġregister Time . toFloat () Ġ* Ġ 1 0 0 0 Ġ// ĠH ay Ġque Ġpas ar lo Ġa Ġmilliseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . difference Ġ= Ġupdate Sector . register Time Ġ- Ġgoal Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Update ĠS ector ", Ġupdate Sector . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsector Db Instance ?. update Sector ( update Sector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Lap Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreload Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Error Ġen Ġla Ġentrada Ġde Ġdatos . ĠComp r ue be Ġel Ġent ren amiento Ġseleccion ado ", ĠSn ackbar . LENGTH _ LONG ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Action TextColor ( Color . RED ). setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist L aps . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Data Short Run ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list Data Sector s . size Ġ== Ġ( list L aps . size - 2 )) Ġ{ Ġ// Si Ġel Ġnumero Ġde Ġvue lt as - 2 Ġno Ġes Ġel Ġmis mo Ġque Ġel Ġde Ġsect ores , Ġno Ġes Ġuna Ġc arr era Ġc ort a ĠvÃ¡l ida ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpos Lap : ĠInt Ġ= Ġ 1 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( sector : ĠS ector ? Ġin Ġlist Data Sector s ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdate Sector : ĠS ector Ġ= Ġsector !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgoal Time Ġ= Ġupdate Sector !!. goal Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġregister Time Ġ= Ġ( list L aps [ pos Lap ] !!. moving _ time Ġ/ Ġ( list L aps [ pos Lap ] !!. distance Ġ/ Ġ 1 0 0 0 )). to Long () Ġ// ĠLo Ġtransform amos Ġa ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . register Time Ġ= Ġregister Time . toFloat () Ġ* Ġ 1 0 0 0 Ġ// ĠH ay Ġque Ġpas ar lo Ġa Ġmilliseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . difference Ġ= Ġ( update Sector . register Time Ġ- Ġgoal Time ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Update ĠS ector ", Ġupdate Sector . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsector Db Instance ?. update Sector ( update Sector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpos Lap ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreload Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Error Ġen Ġla Ġentrada Ġde Ġdatos . ĠComp r ue be Ġel Ġent ren amiento Ġseleccion ado ", ĠSn ackbar . LENGTH _ LONG ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Action TextColor ( Color . RED ). setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist L aps . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Data Long Run ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( list L aps . size Ġ< Ġ 3 ) Ġ{ Ġ// ĠSi Ġhay Ġmas Ġde Ġdos Ġvue lt as , Ġno Ġes Ġun Ġc arr era Ġl arga ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġac u Register Time : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġac u Distance : ĠFloat Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( lap : ĠLap ? Ġin Ġlist L aps ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġac u Register Time Ġ+= Ġlap !!. moving _ time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġac u Distance Ġ+= Ġ( lap !!. distance Ġ/ Ġ 1 0 0 0 ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġupdate Sector : ĠS ector Ġ= Ġlist Data Sector s [ 0 ] !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġgoal Time Ġ= Ġupdate Sector !!. goal Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġregister Time Ġ= Ġ( ac u Register Time Ġ/ Ġac u Distance ). to Long () Ġ// ĠLo Ġtransform amos Ġa ĠLong ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . register Time Ġ= Ġregister Time . toFloat () Ġ* Ġ 1 0 0 0 Ġ// ĠH ay Ġque Ġpas ar lo Ġa Ġmilliseconds ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Sector . difference Ġ= Ġ( update Sector . register Time Ġ- Ġgoal Time ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Update ĠS ector ", Ġupdate Sector . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsector Db Instance ?. update Sector ( update Sector ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreload Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Error Ġen Ġla Ġentrada Ġde Ġdatos . ĠComp r ue be Ġel Ġent ren amiento Ġseleccion ado ", ĠSn ackbar . LENGTH _ LONG ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Action TextColor ( Color . RED ). setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist L aps . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠARG _ COLUMN _ COUNT : ĠString Ġ= Ġ" column - count " ĊĠĠĠ Ġ} Ċ } Ċ