package Ġ` in `. ab addon . dem or v Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ Ċ class ĠMain ViewModel Ġ: ĠViewModel (), ĠLoad More Listener { ĊĠĠĠ Ġprivate Ġval ĠPAGE _ SIZE Ġ= Ġ 5 ĊĠĠĠ Ġprivate Ġval Ġtodo Repo : ĠTodo Repository Ġ= ĠDefault Todo Repo () ĊĊĠĠĠ Ġprivate Ġvar Ġ_ data : ĠMutable LiveData < List < Item >> Ġ= ĠMutable LiveData ( emptyList ()) ĊĠĠĠ Ġval Ġdata : ĠLive Data < List < Item >> Ġ= Ġ_ data ĊĊĠĠĠ Ġprivate Ġvar Ġ_ isLoading Visible : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġval ĠisLoading Visible : ĠLive Data < Boolean > Ġ= Ġ_ isLoading Visible ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinitial Data Ġ= Ġtodo Repo . get Many ( 0 , 1 0 ) ĊĠĠĠĠĠĠĠ Ġ_ data . value Ġ= Ġinitial Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload More ( current Size : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠisLoading Ġ= Ġ_ isLoading Visible . value !! ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! isLoading Ġ&& Ġtodo Repo . total Size () Ġ> Ġcurrent Size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ isLoading Visible . post Value ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġart ificial Ġdelay ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewData Ġ= Ġtodo Repo . get Many ( current Size , ĠPAGE _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Data Ġ= Ġ_ data . value Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ data . post Value ( old Data Ġ+ ĠnewData ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ isLoading Visible . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 4 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }