데이터 바인딩 라이브러리는 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..
나는 Codelab으로 알아보기 시리즈를 작성하면서 지금까지 GuessTheWord 앱을 수정해왔다. ViewModel을 추가했고, LiveData도 추가했다. 하지만, 앱은 이미 DataBinding을 사용하고 있었는데 이에 대해 소개하지 않았다. 나도 해당 과정을 막연히 따라가다보니 의문점으로만 남겨두었는데 이제서야 소개하게 되었다. 일단 이번 과정에서 다룰 내용은 다음과 같다. DataBinding 라이브러리 요소 사용법을 공부한다. ViewModel, LiveData와 통합하는 법을 공부한다. Fragment에서 클릭 리스너를 대체하기 위해 리스너를 바인딩하는 방법을 공부한다. 데이터바인딩 표현식에 문자열 형식을 추가하는 방법을 공부한다. 빠르게 다음 글로 찾아오도록 노력해보겠다.
데이터 바인딩을 공부하는 이유 요즘 안드로이드에서 가장 많이 사용되는 아키텍처 패턴은 역시 MVVM 패턴이라 할 수 있다. 이 패턴을 프로젝트에 적용할 때, 안드로이드에서는 AAC(Android Architecture Components)를 제공하는데 나는 아직 이 컴포넌트들이 어디에 어떻게 사용되는지 정확히 모르겠다. 일단 데이터 바인딩이 안드로이드에서 MVVM 패턴을 적용할 때 사용되기도 하고.. 또, 구글에 Android MVVM 학습 순서, Android Developer 사이트에서 MVVM을 검색하면 ViewModel 클래스가 가장 먼저 나오고 샘플 코드에 observe()나 Observer 등의 observe 라는 메소드, 자료형이 나오기 때문이었다. 물론 위의 생각은 나의 오판일수도 있다. ..