본문 바로가기
프로그래밍

[Android] MutableLiveData를 LiveData로 간단히 은닉시켜보자

by hansoo.labs 한수댁 2020. 3. 19.

안드로이드의 LiveData를 뷰모델에서 사용하거나 앱 상태 관리할 때 사용하곤 한다.. 이때, 클래스의 완성도를 위해 외부에서 변경하지 못하도록 불변(immutable) 속성을 만들게 된다.

이런식.

val notices: LiveData<List<NoticeItem>> = MutableLiveData()

그리고 데이터를 변경해주려면, MutableLiveData로 타입을 변환시켜서 사용해야 한다. 그때마다 타입변환을 해야 하는 수고를 코틀린의 확장함수로 정의하면 편하더라구.. protected 또는 private로 클래스 안에 작성해야 클래스 외부에서 toMutable함수를 사용할 수 없다.

protected fun<T> LiveData<T>.toMutable(): MutableLiveData<T>? {
    return this as? MutableLiveData
}

이렇게 사용하니, 정말 코드량이 팍 줄었다.

notices.toMutable()?.postValue(newList)

댓글0