티스토리 뷰

개발/안드로이드

Android Data Binding

임뒤 2017. 10. 12. 10:22

ButterKnife 접고 Databinding으로 고고.


http://gun0912.tistory.com/71

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


여기 두개를 참고해서 잘해봤다.


나처럼 처음 하실 때 주의사항.


일단 하란대로 했는데 안되면, Build > Clean Project or Rebuild Project 하고 하자.


해보자. 첫째로, build.gradle(Module: app) > android { 

안에다가

dataBinding {

enabled = true

}

추가하면 사용할 수 있당.


사용하고자 하는 layout의 최상위에 layout으로 감싸준다.

<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">

요런 식으로다가.


내가 개인적으로 느끼기엔, Data Binding의 가장 핵심적인 개념은, xml을 겁나 잘 활용하겠다. 라고 초보적인 생각이 듬.

그래서 제일 이해하면 좋은 개념이 xml에서 변수 선언해서 가져다 쓰는게 된다는 거. 진짜 리얼 대박.


<data>
<variable name="activity" type="com.rimduhui.activity.LoginActivity"/></data> 

요렇게  선언해서 쓰면 됨.

근데, 이거 전에 사실. 자바 코드랑 xml이랑 연결해주는 Binder가 필요하니까, 그걸 어떻게 하는지 보자고.

겁나 신기한게, 위에 처럼 셋팅하면, layout선언한 놈의 이름 따라서 Binding class가 만들어진다.


ex) activity_login.xml -> ActivityLoginBinding

login_activity.xml -> LoginActivityBinding

aaaakkkk.xml -> AaaakkkkBinding


요렇게 Binding해주는 클래스를 자동으로 만듬. 

그러면 얘를 선언해서 바인딩 해주면 댐.


ActivityLoginBinding mBinding = DataBindingUtil.setContentView(this, R.layout.activity_login);

요로케.


그리고, 저 위에 변수 선언했다고 했잔하요. 그 변수도 연결을 시켜주셔야 함.

어케 하냐면 얘도 신기해. 변수 name 을 activity라고 했잔항. 그러면 저 Binding 클래스에 setActivity라는 메소드가 생김.


setter가 생긴다고.


그니까 변수 이름을 'aaaaaa'라고 하면 setAaaaaa 메소드가 생기고, 변수 이름을 'asdf'라고 하면, setAsdf 메소드가 생기는 거임.


그러면 변수 연결 ㄱㄱ. 

mBinding.setActivity(this);

잘했당.


그러면 다음으로, listener만 달고 끝내자.


listeners는 솔직히 onClick해서 원래 걍 우리 하는 방식이랑 다를께 없음.

좋은 점은 저렇게 변수를 선언해서 변수를 넘겨줄 수 있다는 거얌.


android:onClick="@{activity::onLogin}"

요런식으로 선언하면 됨. 


public void onLogin(View v) {
Log.i(TAG, "onLogin");
}

View v 선언 안해도 되나 해봤는데, 안하면 안됨. 삽질하지 말고 시키는대로 ㄱㄱ.

'개발 > 안드로이드' 카테고리의 다른 글

Android Dagger2 적용  (0) 2017.10.12
Android Dialog  (0) 2017.10.12
Android ButterKnife 적용  (0) 2017.10.11
Glide Transition  (0) 2017.10.10
VideoView animation  (0) 2017.09.29
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
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