def lifecycle_version = "2.4.0"
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation 'androidx.activity:activity-ktx:1.4.0'
특정 타입의 데이터를 보유할 LivaData 인스턴스 생성 이 작업은 일반적으로 ViewModel클래스 내에서 이뤄진다.
class TestViewModel : ViewModel() {
val liveData: MutableLiveData<String> by lazy {
MutableLiveData<String>()
}
}
onChanged() 메서드를 정의하는 Observer 객체를 만든다. 이 메서드는 LiveData 객체가 보유한 데이터 변경 시 발생하는 작업을 제어한다. 일반적으로 Activity나 Fragment 같은 UI 컨트롤러에 Observer 객체를 만든다.
observe() 메서드를 사용하여 LiveData 객체에 Observer 객체를 연결한다. observe() 메서드는 LifecycleOwner 객체를 사용한다. 이렇게 하면 Observer 객체가 LiveData 객체를 구독하여 변경사항에 관한 알림을 받는다. 일반적으로 활동이나 프래그먼트와 같은 UI 컨트롤러에 Observer 객체를 연결합니다.
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// other Setup
val observer = Observer<String> {
binding.liveDataTextView.text = it
}
viewModel.liveData.observe(this, observer)
}
binding.button.setOnClickListener {
viewModel.liveData.value = "Another Name"
}