あちこちで見かける AbsentLiveData。
ViewModel の中で以下のように使われています。
val game: LiveData<RefreshableResource<GameEntity>> = Transformations.switchMap(_gameId) { gameId ->
when (gameId) {
BggContract.INVALID_ID -> AbsentLiveData.create()
else -> gameRepository.getGame(gameId)
}
}
調べてみると、
どうやら、null の入った LiveData のようです。
/**
* A LiveData class that has `null` value.
*/
class AbsentLiveData<T : Any?> private constructor(): LiveData<T>() {
init {
// use post instead of set since this can be created on any thread
postValue(null)
}
companion object {
fun <T> create(): LiveData<T> {
return AbsentLiveData()
}
}
}
うん、揃う。
これは、コピペで使っていきましょう。