package Ġcom . w ada 8 1 1 . view models aved state . sample Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . w ada 8 1 1 . view models aved state . Saved State Adapter Ċ import Ġcom . w ada 8 1 1 . view models aved state . live Data Ċ import Ġcom . w ada 8 1 1 . view models aved state . sample . Sample ViewModel . Count Up Value . ONE Ċ Ċ class ĠSample ViewModel ( saved State Handle : ĠSaved State Handle ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġenum Ġclass ĠCount Up Value ( val Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠONE ( 1 ), ĊĠĠĠĠĠĠĠ ĠT EN ( 1 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar ĠviewModel Count Ġ= ĠMutable LiveData ( 0 ) ĊĠĠĠ Ġvar ĠviewModel Count Text : ĠLive Data < String > Ġ= ĠMed iator LiveData < String >(). also Ġ{ Ġlive Data Ġ-> ĊĠĠĠĠĠĠĠ Ġlive Data . add Source ( viewModel Count ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ"$ count " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcount Up Value Enum LiveData : ĠMutable LiveData < Count Up Value ?> Ġby Ġsaved State Handle . live Data ( object Ġ: ĠSaved State Adapter < Count Up Value ?, ĠInt ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġto Saved State ( value : ĠCount Up Value ?): ĠInt ? Ġ= Ġvalue ?. ordinal ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfrom Saved State ( state : ĠInt ?): ĠCount Up Value ? Ġ= ĠCount Up Value . values (). first OrNull Ġ{ Ġit . ordinal Ġ== Ġstate Ġ} ĊĠĠĠ Ġ}, ĠONE ) ĊĠĠĠ Ġval Ġsaved State Count : ĠMutable LiveData < Int > Ġby Ġsaved State Handle . live Data ( 0 ) ĊĠĠĠ Ġvar Ġsaved State Count Text : ĠLive Data < String > Ġ= ĠMed iator LiveData < String >(). also Ġ{ Ġlive Data Ġ-> ĊĠĠĠĠĠĠĠ Ġlive Data . add Source ( saved State Count ) Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . value Ġ= Ġ"$ count " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġlog : ĠMutable LiveData < String > Ġby Ġsaved State Handle . live Data (" Log :") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġappend Log (" ViewModel :: init ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcount Up () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Count . value Ġ= ĠviewModel Count . value ?. plus ( count Up Value Enum LiveData . value ?. count Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġsaved State Count . value Ġ= Ġsaved State Count . value ?. plus ( count Up Value Enum LiveData . value ?. count Ġ?: Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġappend Log ( text : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . value Ġ= Ġlog . value !!. lines (). to Mutable List (). also Ġ{ Ġit . add ( text ) Ġ}. take Last ( 1 0 ). join ToString ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġappend Log (" ViewModel :: on Cle ared ") ĊĠĠĠ Ġ} Ċ }