package Ġcom . sport . view models Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . sport . data . Resource Ċ import Ġcom . sport . data . repository . Sport Data Repository Ċ import Ġcom . sport . data . table . Sport Data Ċ import Ġcom . sport . model . Sport Ċ import Ġcom . sport . utilities . Share Preferences Util Ċ import Ġcom . sport . utilities . Sport Executors Ċ import Ġcom . sport . utilities . USER _ CURRENT _ ITEM Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . lang . StringBuilder Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠUser : Ġb ize hao Ċ Ġ* ĠDate : Ġ 2 0 1 9 - 0 4 - 0 4 Ċ Ġ* ĠTime : Ġä¸Ĭ åįĪ 1 1 : 0 4 Ċ Ġ* ĠDescription : Ġ çº§åĪ« åĪĹè¡¨ çļĦæķ°æį® Ċ Ġ*/ Ċ class ĠGr ade ViewModel Ġinternal Ġconstructor ( private Ġval Ġrepository : ĠS port Data Repository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġs port DataList : ĠList < Sport Data > Ġ// æķ°æį®åºĵ éĩĮ çļĦæķ°æį® ĊĊĠĠĠ Ġprivate Ġval Ġtime Format Ġ= ĠSimpleDateFormat (" MM - dd ", ĠLocale . CH INA ) ĊĊĠĠĠ Ġprivate Ġval Ġs port ListOf LiveData Ġ= ĠMutable LiveData < ArrayList < Sport >>() Ġ// è§ĨåĽ¾ åĪĹè¡¨ çļĦ è¿Ĳ åĬ¨ åĪĹè¡¨ æķ°æį® ĊĊĠĠĠ Ġprivate Ġval Ġs port Map Of LiveData Ġ= ĠMutable LiveData < HashMap < Int , ĠInt >>() Ġ// è§ĨåĽ¾ åĪĹè¡¨ çļĦ çŃī çº§ åĪĴ åĪĨ æķ°æį® ĊĊĠĠĠ Ġval Ġnext Id Ġ= ĠMutable LiveData < Int >() ĊĊĠĠĠ Ġ// èİ·åıĸ æķ°æį®åºĵ éĩĮ çļĦæķ°æį® ĊĠĠĠ Ġfun ĠgetS port Data () Ġ= Ġrepository . getS port Data () ĊĊĠĠĠ Ġfun ĠgetS port ViewData () Ġ= Ġs port ListOf LiveData ĊĊĠĠĠ Ġfun ĠgetS port Map Of LiveData () Ġ= Ġs port Map Of LiveData ĊĊĠĠĠ Ġ// è®¾ç½® åĪĹè¡¨ æķ°æį® ĊĠĠĠ Ġfun Ġset Sport ViewData ( data : ĠList < Sport Data >, Ġcurrent Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġs port DataList Ġ= Ġdata ĊĠĠĠĠĠĠĠ Ġval Ġs port List : ĠArrayList < Sport > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġval Ġmap 1 : ĠHashMap < Int , ĠInt > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġvar Ġnn Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġm Sport : ĠS port ĊĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġdata ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport Ġ= ĠS port ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . grade , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . interval Time , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs bd Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs . sub Data . forEach Ġ{ Ġit t Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs bd . append ( itt . push Up Num ). append ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport . push Up Num Ġ= Ġs bd . delete ( s bd . length Ġ- Ġ 1 , Ġs bd . length ). toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . grade Ġ!= Ġnn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnn Ġ= Ġs . grade ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport . is Start Of Group Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport . is Start Of Group Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport . dateTime Ġ= Ġs . dateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Sport . id Ġ== Ġcurrent Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sport . current Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port List . add ( m Sport ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġxx Ġ= Ġif Ġ( map 1 [ s . grade ] Ġ== Ġnull ) Ġ 0 Ġelse Ġmap 1 [ s . grade ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( xx Ġ!= Ġnull ) Ġmap 1 [ s . grade ] Ġ= Ġxx Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġs port Map Of LiveData . value Ġ= Ġmap 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( current Position Ġ== Ġ 0 Ġ&& Ġs port List [ 0 ]. dateTime Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchange Sport ListOf Time ( sport List , Ġcurrent Position ); ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port ListOf LiveData . value Ġ= Ġs port List ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// æĶ¹åıĺ æĹ¶éĹ´ åĪĹè¡¨ Ġå½ĵåīį é¡¹ ĊĠĠĠ Ġfun Ġchange Sport ListOf Time ( sport List : ĠArrayList < Sport > ?, Ġcurrent Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( sport List Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . add ( Calendar . DATE , Ġ- 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin Ġs port DataList . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sport DataList [ s ]. id Ġ>= Ġcurrent Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar . add ( Calendar . DATE , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs port DataList [ s ]. dateTime Ġ= Ġtime Format . format ( calendar . time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs port DataList [ s ]. dateTime Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs port List [ s ]. current Ġ= Ġs port List [ s ]. id Ġ== Ġcurrent Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs port List [ s ]. dateTime Ġ= Ġs port DataList [ s ]. dateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS port Executors . disk IO . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update Sport Data ( sport DataList ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Id . post Value ( current Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs port ListOf LiveData . value Ġ= Ġs port List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }