〈kotlin〉MVVM② ViewModel

Android studioでkotlinを使ってAndroidアプリ作成の勉強中。

ViewModel

ViewModelはUIで表示するデータを保存して管理しておくためのクラス。
アクティビティで最初に呼び出されてから終了するまで存在し、
その間データがそのまま保持されている。
UIからはViewModelに保存されたデータにアクセスしてデータを使用する。

実装

build.gradle
dependencies{
    implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0"
}
ViewModelを継承したクラスの作成

ViewModel内の変数は外部からの書き換えができないようにする。

class SampleViewModel : ViewModel(){
    private var _sampleData : String= "Sample"
    val sampleData : String = _sampleData

    fun changeText() {
        _sampleData = "Sample Change"
    }

privateをつけた_sampleDataはクラス内でデータを書き変える時に使い、
このデータを書き換えるためのメソッドも用意する(今回はchangeText())。
_sampleDataをpublicな変数sampleData(valで定義)に保存し直して、
外部からはこのsampleDataだけにアクセスするように設計する。
これで外部で直接書き換えができないようになる。


上記に合わせてLiveDataを使用する。
また次回。

参考https://developer.android.com/topic/libraries/architecture/viewmodel?hl=JA#sharing