MutableLiveData와 달리 LiveData는 외부에서 접근이 불가능하다.
MainViewModel.kt
class MainViewModel : ViewModel(){
private var _testMutableLiveData = MutableLiveData(0)
val testLiveData : LiveData<Int>
get() = _testMutableLiveData
fun plusLiveDataValue(){
_testMutableLiveData.value = _testMutableLiveData.value!!.plus(1)
}
// var testMutableLiveData = MutableLiveData(0)
//
// //MutableLiveData <-> LiveData
//
// fun plusLiveDataValue(){
// testMutableLiveData.value = testMutableLiveData.value!!.plus(1)
// }
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var viewModel : MainViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MainViewModel::class.java)
findViewById<Button>(R.id.btnArea).setOnClickListener {
viewModel.plusLiveDataValue()
}
viewModel.testLiveData.observe(this,Observer{
findViewById<TextView>(R.id.textArea).text = it.toString()
})
viewModel.testLiveData = 10 //오류가 나는 부분.
// findViewById<Button>(R.id.btnArea).setOnClickListener {
// viewModel.plusLiveDataValue()
// }
//
//
// viewModel.testMutableLiveData.observe(this, Observer{
//// findViewById<TextView>(R.id.textArea).text = viewModel.testMutableLiveData.value.toString()
// findViewById<TextView>(R.id.textArea).text = it.toString() //위 코드와 동일.
//
//
// })
//
// viewModel.testMutableLiveData.value=10
}
}

위와 같이 ViewModel내의 LiveData에는 접근하지 못한다. -> ViewModel 내부에서만 로직 작성 가능.
'Android > LiveData' 카테고리의 다른 글
ViewModel + LiveData + LifeCycleOwner (0) | 2022.11.22 |
---|---|
Map/SwitchMap (0) | 2022.11.22 |
Fragment - LiveData / LifeCycleOwner (0) | 2022.11.22 |
ViewModel과 LiveData (0) | 2022.11.22 |
LiveData (0) | 2022.11.21 |