MutableLiveDataを初期値で初期化するにはどうすればよいですか?私は次のようなものを探しています:
val text = MutableLiveData<String>("initial value")
MutableLiveData
が更新され、初期値を受け入れるコンストラクターが追加されました:)
私が見ることができるものから、コンストラクタはこのバージョンから利用可能です:
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha01'
ただし、MediatorLiveData
を更新していないことを反映して残念です。
初期化を行う便利な 拡張機能 を作成できます。
fun <T : Any?> MutableLiveData<T>.default(initialValue: T) = apply { setValue(initialValue) }
val liveData = MutableLiveData<String>().default("Initial value!")
最後に、私は使用できることに気付きます
val text = MutableLiveData<String>().apply { postValue("initial value")}
(postValue
はバックグラウンドスレッドから使用する場合に必要です。それ以外の場合、メインスレッドから使用する場合はvalue = "initial value"
)を安全に使用できます
次のような拡張コンストラクター(シュガートリック)を作成できます。
fun <T : Any?> MutableLiveData(defaultValue: T) = MutableLiveData<T>().apply { setValue(defaultValue) }
を使用して:
var defaultValue: MutableLiveData<String> = MutableLiveData("Default value")
また、このように..
val data = MutableLiveData<String>()
data.value = "data"
val text = MutableLiveData<String>().apply {
"apply"
}
Log.d("Data",text.value)