데이터바인딩 - 리스너바인딩하기
버튼을 클릭했을때나 리스너들은 모두 뷰모델에서 처리할 수 있습니다.
onClick 처럼 이름이 정해져 있는 것들은 다르게 쓰면 안되고 그대로 써야합니다.
ex ) android:onClick="@{(v)->viewModel.clickEvent()}"
다른 컴포넌트 들은 setOn~Listener에서 set을 빼고 O를 소문자 o로 바꿔쓰면 작동합니다.
ex) setOnNavigationSelectListener
- >app:NavigationItemSelectedListener="@{viewModel::NavigationItemSelectedListener}"
ex)onRangeSelectListener
-> app:onRangeSelectedListener="@{calendarDialogViewModel::onRangeSelectedListener}"
복잡한 리스너 방지
몇 가지 특화된 click 이벤트 핸들러가 있는데, 이런 핸들러는 충돌 방지를 위해 android:onClick
이외의 특성이 필요합니다. 이러한 충돌을 피하기 위해 다음과 같은 특성이 생성되었습니다.
클래스 | 리스너 Setter | 특성 |
---|---|---|
SearchView | setOnSearchClickListener(View.OnClickListener) | android:onSearchClick |
ZoomControls | setOnZoomInClickListener(View.OnClickListener) | android:onZoomIn |
ZoomControls | setOnZoomOutClickListener(View.OnClickListener) | android:onZoomOut |
자세히 보러가기- Android Developers(데이터바인딩 라이브러리)
https://developer.android.com/topic/libraries/data-binding/index.html?hl=ko%EC%97%90
'Android > Architecture' 카테고리의 다른 글
Clean Architecture (0) | 2019.08.26 |
---|---|
MVP 패턴을 알아보기 (0) | 2019.08.19 |
MVVM - ViewPager와 TabLayout (2) | 2019.03.26 |
안드로이드 MVVM 패턴 (3) | 2019.01.26 |
댓글