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 라이브러리
사용방법을 마치겠습니다