티스토리 뷰

[Android Studio]Jetpack Compose + viewModel + LiveData kotlin

 

viewModel과 LiveData를 모르는 분들은 MVVM에 대한 이론과 이전 포스팅을 먼저 참고하시는 걸 추천드립니다.

https://devsmin.tistory.com/54/

 

build.gradle 종속 선언

implementation "androidx.compose.runtime:runtime-livedata:$compose_version"

 

1. ViewModel Class 작성

class MainActivityViewModel: ViewModel() {

    private val _text: MutableLiveData<String> = MutableLiveData()
    val text: LiveData<String> get() = _text

    fun updateText(t: String) {
        _text.postValue(t)
    }
}

 

2. ViewModel 초기화

class MainActivity : ComponentActivity() {
    private lateinit var viewModel: MainActivityViewModel
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            viewModel = ViewModelProvider(this).get(MainActivityViewModel::class.java)
            ComposeTheme {
                Greeting()
            }
        }
    }
}

 

3. 데이터 옵저빙

fun Greeting() {
    val data by viewModel.text.observeAsState("")
    Column{
	Text(data)
        Button(onClick = { viewModel.updateText(UUID.randomUUID().toString()) }) { }
    }
}

 

버튼 클릭 시 텍스트가 변경되는걸 볼 수 있다.

댓글