- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 안드로이드#코틀린#디자인패턴#싱글턴패턴#개발#앱개발
- 삼성역량테스트
- 아키텍처패턴
- 삼성파우치
- 자바
- 백준
- lateinit
- Higher-Order
- #충무로맛집#골목식당#스테이크#
- 코딩테스트
- tomtoc
- 안드로이드
- kotiln
- Android
- 삼성청년sw아카데미
- 투포인터
- MVVM
- 비트마스킹
- ssafy서울
- 코틀린
- nullalble
- Kotlin
- DataBinding
- 알고리즘
- 탐탁삼성파우치
- 탐탁노트북파우치
- bitmasking
- 등산로조성
- Java
- 싸피
공상하는 개발자
[Android/kotlin] DataBinding 파헤치기 본문
DataBinding이란?
데이터 바인딩은 xml의 위젯 등에 접근할 때 findViewById()를 쓰지 않고 자동으로 View에 연결시켜준다.
DataBinding을 쓰는 이유는?
- 귀찮은 logic들을 xml로 뺄 수 있게 해준다.
- View 자체에서 데이터 변경에 대한 동적 처리가 가능하다.
- View와 ViewModel의 분리에 용이함. (MVVM 패턴에 적용)
단점 : 빌드 시간이 오래 걸린다. 클래스들이 많이 만들어져서 그렇다.
DataBinding을 사용하기 위한 설정
android {
//..
dataBinding {
enabled = true
}
//..
}
DataBinding enabled를 true로 설정하면 DataBinding을 쓰기 위한 설정은 끝!
xml에 DataBinding 적용하기
여기서 Layout에 클릭하고 mac으로는 option+enter를 누르면 간편하게 데이터 바인딩 모드로 바꿀 수 있다.
xml DataBinding 적용
Convert to data binding layout 을 클릭한다.
DataBinding 적용된 xml
바깥이 layout 태그로 싸이고 그 안에 data 태그가 만들어졌다.
더하기 기능 xml 작성
간단한 더하기 기능을 구현하는 xml을 짜보았다. 두 개의 EditText에 숫자를 넣고 버튼을 클릭하면 Toast로 더해진 숫자를 출력하는 프로젝트이다.
이 프로젝트에 DataBinding을 적용시켜보자.
Variable 추가
plusActivity : MainActivity 타입의 variable (onclick에 MainActivity의 메서드를 연결하기 위해서 만듦)
plusResult : 두 editText의 더한 값을 저장하려고 만듦.
속성에 variable 값 사용하기
Button의 onClick 속성에 데이터 바인딩 메서드(plusClick()) 를 xml에서 바로 연결이 가능하다.
단방향 데이터바인딩은 @{} , 양방향은 @={} 식으로 나타낸다.
kotlin 클래스에 DataBinding 적용
1. DataBinding을 적용시키면 해당 xml 이름에 맞는 Binding 클래스가 생성된다
-> activity_main xml에 데이터 바인딩을 적용시켜서 ActivityMainBinding 이 만들어진다.(파스칼 표기법 기준)
2. 생성된 바인딩 클래스를 DataBinidngUtil 객체의 setContentView 메서드를 이용해서 xml과 연결시킨다.
3. xml에서 생성했던 variable들을 해당하는 것들에 연결시켜준다.
-> 연결시켜 줄 때 해당 Binding 클래스.아이디값 으로 호출한다. 예를 들어 위젯의 아이디가 et_firstNumber 였다면 binding.etFirstNumber로 불러온다. (카멜 표기법 기준)
-> findViewById()가 필요 없다.
파스칼 표기법, 카멜 표기법이 궁금하다면?
결과 화면
결론
되게 간단한 예제로 접근했는데 만약 recyclerview 같은 것에서 데이터 클래스의 속성 값들을 넣고 싶을 때도 DataBinding을 이용하면 매우 효율적이고 간결한 코드를 짤 수 있다. variable에 데이터 클래스를 추가해서 그 속성 값을 위젯에 연결시켜주면 된다. 다음에 기회가 된다면 이에 대해서도 포스팅을 해보겠다. DataBinding을 이용해서 findViewById()가 없는 프로젝트를 만들어보길 바란다.
'개발 > 안드로이드' 카테고리의 다른 글
[기초 탄탄] 안드로이드 스레드 파헤치기. (0) | 2020.06.14 |
---|---|
[아키텍쳐 패턴] 3탄 : MVVM 패턴 적용하기. (1) | 2020.04.19 |
[Kotlin] Higher-Order Functions 이란? (0) | 2020.02.02 |
[Kotlin] Null 안정성 파헤치기 (0) | 2020.01.25 |
[아키텍쳐 패턴] 2탄 : MVP 패턴 적용하기 (0) | 2020.01.19 |