DataBinding(데이터 바인딩) 라이브러리 사용하기

Posted by ITPangPang
2017. 11. 17. 11:44 안드로이드(android)/DataBinding




DataBinding(데이터 바인딩)

라이브러리 사용하기












이번글은 findViewById를

버리기 위해(?) 간단하게

작성해보려고 합니다.


데이터바인딩 라이브러리의 모든것에

대해 공부하고 알아보겠다라고

생각하시는 분들은 Developer에 나와있는

글을 읽어보시면 도움이 많이 될 것입니다.


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


실제로 저도 위의 링크에서

처음 접했고, 설명도 정말 잘되어있습니다.

그냥 하라는 대로 해도 어렵지 않게

적용할 수 있을겁니다.



저 같은 경우는 위 사이트에

70~80%정도를 따라해보고 써봤고

쓰다보니 편한부분도 당연히 있었는데


기존 저의 코드 스타일?에서

 벗어나는 부분이 좀 있어서

(너무 xml이 길어지는..?)


지금은 findViewById를 생략하는 용도로만

사용하고 있습니다.


이 글은 너무 간단해서

쓸까말까 고민했었는데


앞으로 블로그에 올라갈 코드들에

전부 데이터 바인딩 라이브러리가

적용될 예정이기 때문에 올려야겠다고 생각했습니다.



사용하기 전에


위 링크에도 나와있지만

데이터바인딩 라이브러리를 사용하기

위해서는


1. Android 2.1(API 레벨 7이상)

2. Android Plugin for Gradle 1.5.0-alpha1 이상

3. Android Studio 1.3 이상


3가지 조건을 모두 만족해야 합니다.

(보시면 아시겠지만 최소사항에서 걸리시는분은

대부분 없으리라 생각합니다)



이제

바로 사용해보겠습니다


1. build.gradle(app)



Build.gradle(Module:app) 더블클릭




주황색 박스에 있는

내용만 추가해주세요


실수 할 수 있는 부분은


1. android{ } 안에 넣지 않았을경우

2. enabled 스펠링을 틀렸을경우

3. enabled : true


이러한 경우들만 제외한다면 없을겁니다


추가 하셨다면

Sync Now를 눌러주세요





2. activity_main.xml



저 처럼

프로젝트를 생성하고

바로 열어보셨다면

아래와 같이 되어있을겁니다.

(TextView에 id만 제가 추가했습니다)



여기서 아래와 같이 최상단에

<layout>을 추가시켜주어서

전체를 감싸줍니다



<layout></layout>으로 감싸주신후에

기본 schemas만 위로 옮겨주시면 됩니다


이제 마지막으로 사용해보기만 하면 됩니다.



3. MainActivity



MainActivity로 넘어와서

위와 같이 Activity라고 입력해보시면

ActivityMainBinding이라는 클래스가 있는것을

확인 할 수 있습니다.


이 클래스명은 레이아웃 파일의 이름기준으로

파스칼표기법으로 변환하고 뒤에 Binding이라는

글자가 붙은 형태입니다

(파스칼표기법은 기존 클래스명처럼 첫글자가 대문자이고

띄어쓰기구분은 다시 대문자로 표기하는 방법입니다)


레이아웃 파일이 activity_main.xml 이었으므로

바인딩클래스명은 ActivityMain+[Binding]이 되는것이고


만약에 fragment_main.xml 이었으면

Fragment+[Binding] = FragmentBinding이 되는것입니다



여기까지 이해가 되셨으면

아래와 같이 수정해주세요


가장 처음나오는 import 부분은 자동추가로 생성된것이고


//setContentView

기존에 사용하던 setContentView 대신에


DataBindingUtil.setContentView로 수정해줍니다.


딱 이거만 하면 완료됩니다.


그 이후로는

id를 부여한 View에 접근해서

사용하면 됩니다.


처음에 TextView에 id를 textview라고

부여했으므로


layout.

(import한 클래스에 접근해서)


layout.textview

(id를 부여한 TextView에 접근해서)


layout.textview.setText(~)

(글자를 바꿔줍니다)




Fragment에서 적용하는 방법


요즘은 Fragment 사용이 거의

필수가 되기 때문에 이 부분도 간단하게

적고 넘어가겠습니다.



기존에 Fragment에서는

레이아웃에 이런느낌으로 접근을 해서

사용해왔습니다.


이 부분을 위에서 알아보았던

DataBinding을 적용해보면


역시나 앞에 과정은 똑같이 진행됩니다

(layout파일에 <layout></layout>을 감싸는 부분)


그 후에 아래와 같이 수정하시면 됩니다


달라진 부분은 크게 없습니다

역시나 파스칼표기법으로 변환된

FragmentMainBinding 클래스

그리고 return시 layout.getRoot();








이상으로 DataBinding 라이브러리

사용방법을 마치겠습니다