Android/Architecture

데이터바인딩 - 리스너바인딩하기

봄석 2019. 2. 21. 23:49

데이터바인딩 - 리스너바인딩하기

버튼을 클릭했을때나 리스너들은 모두 뷰모델에서 처리할 수 있습니다.


onClick 처럼 이름이 정해져 있는 것들은 다르게 쓰면 안되고 그대로 써야합니다.

ex ) android:onClick="@{(v)->viewModel.clickEvent()}"


다른 컴포넌트 들은 setOn~Listener에서 set을 빼고 O를 소문자 o로 바꿔쓰면 작동합니다.

ex) setOnNavigationSelectListener 

- >app:NavigationItemSelectedListener="@{viewModel::NavigationItemSelectedListener}"

ex)onRangeSelectListener

-> app:onRangeSelectedListener="@{calendarDialogViewModel::onRangeSelectedListener}"


복잡한 리스너 방지

리스너 식은 매우 강력하여 개발자가 작성하는 코드가 매우 쉽게 읽히도록 만들 수 있습니다. 반면에, 복잡한 식을 포함한 리스너는 레이아웃을 읽기 어렵고 적절히 유지 관리할 수 없게 만듭니다. 따라서 리스너 식은 UI에서 콜백 메서드로 사용 가능한 데이터를 전달하는 것만큼이나 단순해야 합니다. 비즈니스 로직은 리스너 식에서 호출한 콜백 메서드 내에 구현해야 합니다.

몇 가지 특화된 click 이벤트 핸들러가 있는데, 이런 핸들러는 충돌 방지를 위해 android:onClick 이외의 특성이 필요합니다. 이러한 충돌을 피하기 위해 다음과 같은 특성이 생성되었습니다.




자세히 보러가기- Android Developers(데이터바인딩 라이브러리)

https://developer.android.com/topic/libraries/data-binding/index.html?hl=ko%EC%97%90