MVVM 3

[MVVM] LiveData와 ViewModel Observer로 연결

Repository의 Data가 변경 되었을 때 UI에 알리기 위해서는 ViewModel이 관찰을 하고 있어야 한다. UI(V)는 보통 onCreate()에서 VM을 생성하고, VM은 Repository를 생성한 뒤 M과 Dao를 통해 연결 되는데, 이 Dao를 LiveData로 구성하면 ViewModel이 지켜 볼 수(obsever) 있게 된다. 연결(MVVM) onCreate/onCreateView 실행이 되면서 viewModel 생성 작업과 이후 연결 작업이 실행 된다. Fragment.kt private val plantDetailViewModel: PlantDetailViewModel by viewModels { InjectorUtils.providePlantDetailViewModelFacto..

[Sunflower 디비보기] BindingAdapter로 View visible/gone

Data Binding으로 View와 직접 데이터를 연결 해 놓으면, 네트워크, DB, 다른 View의 변경 작업만으로 해당 뷰가 사라지고 나타나게 할 수 있다. 자동으로 작업이 되게 하려면 View 는 observe 작업을 통해 viewModel -Model 과의 연결을 해 놓아야 한다. 식물 리스트에서 나의 정원으로 담기를 해 놓은 것이 없다면, 리사이클러 뷰를 아예 보여주지 않는다. @BindingAdapter("isGone") fun bindIsGone(view: View, isGone: Boolean) { view.visibility = if (isGone) { View.GONE } else { View.VISIBLE } } Android AAC JetPack Sunflower 이 글은 코모가 ..

[Sunflower 디비보기] Detail View 에서 Garden 으로 아이템 담기 MVVM

2개의 탭이 있으며, 좌측에는 나의 정원, 우측에는 식물 리스트가 있다. 여러 종류의 식물들이 있는 식물 리스트에서 식물을 하나 선택하면 그 식물의 Detail View로 간다. DetailView에서 나의 정원으로 담기를 누를 경우 선택된 식물이 나의 정원에 담기는데, 이 일련의 과정(MVVM)들의 흐름을 알아본다. View layout 은 데이터 바인딩을 사용하고 viewModel을 통해 View를 업데이트하고, callback을 등록해서 add 버튼에 바로 동작하게 한다 frament_plant_detail.xml callback 은 아래 Fab버튼을 눌렀을 때 반응하도록 onClick 리스너에 등록해준다 View -담기 버튼의 동작을 위한 작업 ViewModel 생성(참고: ViewMode 주입)..