일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 캐치마인드
- 자취필수템
- 재택근무
- 함수형 프로그래밍
- 한달어스
- T자형인재
- 어떻게 나답게 살 것인가
- 목적중심리더십
- 커스텀린트
- 안드로이드
- 끝말잇기
- 소프시스 밤부 좌식 엑슬 테이블
- 테트리스
- 북한살둘레길
- 베드트레이
- 슬기로운 온라인 게임
- 목적 중심 리더십
- 베드테이블
- 면접
- 1일1커밋
- 소프시스
- 브런치작가되기
- 한단어의힘
- 한달독서
- 리얼하다
- 한달브런치북만들기
- 프래그먼트
- 좌식테이블
- 지지않는다는말
- 아비투스
- Today
- Total
정상에서 IT를 외치다
[Android, Databinding] 데이터 바인딩 라이브러리 사용기 본문
안녕하세요. 블랙진입니다.
이번 시간에는 데이터 바인딩에 대해 포스팅 해보겠습니다.
데이턴 바인딩은 데이터를 xml 상에 바로 연동시키는 작업을 말합니다.
자바 코드상에서 textView.setText() 해줄 필요 없이 데이터만 변경해 주면 자동으로 xml 로 연결되는 마법!!
그럼 데이터바인딩에 대해 쉬운 예제로 알아보겠습니다.
1. APP 단계의 build.gradle 에 dataBinding 을 추가해 줍니다.
dataBinding {
enabled = true
}
에러) unresolved reference databinding 발생
kotlin 으로 작업 할 때 바인딩 에러가 발생할 수 있습니다.
unresolved reference databinding 를 통해 에러를 해결해 주세요!
혹은 APP 단계의 build.gradle 상단에
apply plugin: 'kotlin-kapt'
코드만 붙여줘도 충분히 해결이 된답니다 :)
2. User 클래스를 새로 만들어 줍니다.
User.kt
class User(val firstName: String, val lastName: String)
3. activity_main.xml 을 <layout> 으로 둘러 싸도록 합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</layout>
xml을 <layout> 으로 둘러 싸면 바인딩된 xml 을 불러다 사용할 수 있게 됩니다.
이제 위 코드에서 User 클래스를 바인딩 해주겠습니다.
4. User 클래스를 바인딩 해줍니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<!-- data 이름을 user 로 설정하였습니다. -->
<!-- type 은 User 클래스 위치와 함께 표시되어야 합니다. -->
<variable name="user" type="{packageName}.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- user 의 firstName 을 설정해줍니다. -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<!-- user 의 lastName 을 설정해줍니다. -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
</LinearLayout>
</layout>
제 User.kt 의 파일 입니다. 따라서 data 의 type 은 "com.tistory.black_jin0427.mydatabinding.User"가 됩니다.
5. User 에 데이터를 넣고 화면에 보이게 해줍니다.
MainActivity.kt
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//setContentView(R.layout.activity_main)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.user = User("Black","Jin")
}
}
2번에서 activity_main 을 <layer> 로 감싸주었습니다. 그렇게 되면 AcitivityMainBinding 이라는 클래스가 내부적으로 자동 생성됩니다.
(생성이 안되 있다면 Build - Rebuild Project 를 실행해 주세요)
firstName = 'Black', lastName = 'Jin' 데이터를 가지는 User 클래스를 생성한 후 binding 변수에 setUser 해주면 User 데이터가 가지고 있는 firstName 과 lastName이 자동으로 xml 에 적용됩니다.
<!-- user 의 firstName 을 설정해줍니다. -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"/>
<!-- user 의 lastName 을 설정해줍니다. -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.lastName}"/>
위와 같이 설정해 주신것 기억나시죠?
TextView 의 아이디를 설정해 주지 않고 setText 를 안해줘도 xml 상에서 바로 데이터를 입력해 줄 수 있는 데이터바인딩!!
이것 말고도 정말 다양한 기능이 있습니다. 이는 안드로이드 공식 사이트 에서 확인하시고 적용해 주시면 됩니다.
'안드로이드' 카테고리의 다른 글
[Android, Anko Commons, StartActivity] Anko Commons 를 사용한 StartActivity (0) | 2018.08.08 |
---|---|
[Android, operator] Kotlin 연산자 operator 에 대하여 (0) | 2018.08.08 |
[Android, RxBinding] RxBinding 사용기 (3) | 2018.08.07 |
[Android, fromHtml] textview 에서 문자 일부 수정 하기 (0) | 2018.08.01 |
[Android, keyhash] 해시 키값 가져오기 (0) | 2018.07.18 |