데이터 바인딩 라이브러리는 LiveData나 ViewModel같은 AAC와 아주 매끄럽게 동작한다. ViewModel data binding 데이터 바인딩을 사용해 ViewModel과 레이아웃을 연결할 수 있다. ViewModel 객체는 UI 데이터를 가지고 있다. ViewModel 객체를 데이터 바인딩에 전달함으로써 뷰와 ViewModel 객체 사이의 통신을 일부 자동화할 수 있다. 아래는 ViewModel과 레이아웃을 연결하는 방법이다. 레이아웃 파일에 ViewModel 타입의 데이터 바인딩 변수를 추가한다. Fragment 파일안에 ViewModel을 데이터 바인딩에 전달한다. binding.gameViewModel = viewModel Listener bindings 리스너 바인딩은 레이아웃에서 ..
데이터 바인딩은 ViewModel 객체와 같이 사용되는 LiveData와 잘 작동한다. 저번 코드랩에서 ViewModel 객체에 데이터 바인딩을 추가했으므로 LiveData를 적용할 준비가 됐다. Add word LiveData to the game_fragment.xml file 이번에는 word 텍스트뷰를 ViewModel안에 있는 LiveData와 직접 바인드한다. 1. xml의 word_text에 text 속성을 추가해준다. 바인딩 변수를 사용해 GameViewModel의 word LiveData 객체로 설정한다. 여기서 우리는 word.value를 사용할 필요가 없다. 대신, 실제 LiveData 객체를 사용할 수 있다. 만약 word 값이 null이면 빈 문자열을 보여줄 것이다. 2. Game..
우리는 사실 이전 코드랩에서 데이터바인딩을 사용했지만 이는 뷰에 접근할 때, 안전한 방식으로만 사용했다. 하지만, 데이터바인딩의 정수는 이름에서 알 수 있듯이 데이터를 뷰 객체에 직접 바인딩하는 것이다. 현재 우리가 수정한 앱의 구조는 뷰들은 xml에 정의되어 있고, 뷰들을 위한 데이터는 ViewModel에서 가지고 있다. 그리고 각 뷰와 ViewModel 사이에는 UI controller가 있다. 이 때, UI controller를 중개인처럼 사용하지 않고 레이아웃의 뷰가 ViewModel 객체의 데이터와 직접 통신한다면 더 간단할 것이다. ViewModel 객체를 데이터 바인딩으로 전달하면 뷰와 ViewModel 객체 간의 통신을 어느 정도 자동화할 수 있다. Add data binding for t..