Android DataBinding (안드로이드 데이터 바인딩) 사용 방법
Android/JAVA

Android DataBinding (안드로이드 데이터 바인딩) 사용 방법

728x90

안녕하세요

 

오늘은 누구나 사용할 수 있는 DataBinding을 사용해 보려고 합니다. 

우리는 기존 xml에 있는 버튼을 가져다 쓰거나 클릭이벤트를 만들거나, 또는 텍스트뷰를 선언해서 사용할 때 

findViewById()를 사용하고 있었는데요 

 

findViewById()의 단점은 역시 화면이 너무 지저분 해진다는점 ? 코드가 노가다라는 점이 있습니다. 

바로 예제로 비교해드리도록 하겠습니다.

 

0. Default View

저희가 이런 기본적인 화면을 구성한다고 예를 들어봅시다.


1. findViewById()

 

0번에 있는 뷰를 구성하여 사용하기 위해서는 

 

activity_main.xml

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button2" />
    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button3" />
    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button4" />
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button5" />

MainActivity.java

    Button button1, button2, button3, button4, button5;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button1 = findViewById(R.id.button1);
        button2 = findViewById(R.id.button2);
        button3 = findViewById(R.id.button3);
        button4 = findViewById(R.id.button4);
        button5 = findViewById(R.id.button5);


    }

이런식으로 화면을 구성해야 합니다. 

 

지금 제가 예시로 5개만 구현했지만 여기에 다른 textview, button, 이런게 수없이 추가될 수 있거나 다른 동작들을 하게 된다면 더 많은 노가다를 구현 해야겠죠

또한 버튼 클릭 이벤트라던지 이러한 기능들이 추가된다면 더욱 노가다 코드를 작성해야 합니다.

https://coding-oneday.tistory.com/6

 

Android 여러가지 Button 사용방법

안녕하세요 오늘은 안드로이드에서 몰라서는 안되는 가장 기본인 Button에 대하여 설명해드리도록 하겠습니다. 뭐 쓰이는 상황마다 버튼 사용이 다르다곤 하는데 아직 직접적인 경험을 하지 못해서 제가 알고 있었..

coding-oneday.tistory.com

그래서 이러한 불편함과 노가다를 해결하기 위해 버터나이프를 사용했습니다.

하지만 그래도 .java 파일에 코드를 작성해야 하는 단점이 있었죠.

 

하지만 DataBinding을 사용한다면 ?

 

따로 View를 정의하지 않아도 알아서 연결을 해준다는 점. 

불필요한 정의 코드를 줄일 수 있다는 점.

선언하고, 정의하고 불러오고 다시 쓰는 그 모든 코드가 줄어듭니다. 

 

그러면 DataBindng을 사용하기 위해서 어떤 환경이 필요할까요 ?

 

1. build.gradle(Module.app)


android{
    ..
	dataBinding{
        enabled = true
    }
   }

dataBinding enabled true 만 설정 해주시면 됩니다. 

 

2. activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
 // 위에서 선언한 layout 뷰 소스를 그대로 사용하였습니다.
 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
 	..
</layout>

이런식으로 layout 전체를 한번 감싸주기만 하면 됩니다. 

이런식으로 구성해준 후 Rebuild를 한번 해주어야 

 

MainActivity.java 화면에 ActivityMainBinding이 표시되는 것을 확인하실 수 있습니다.

3. MainActivity.java

기존에 사용하던 setContentView가 아닌 DataBindingUitl.setContentView를 사용하시면 됩니다.

이렇게 3번까지 세팅을 완료하셨다면 기존에 정의했던 버튼 텍스트 입력을 DataBinding 에서는 어떻게 불러올까요 >?

너무 간단합니다. 이미 연결이 되어있는 상태이기 때문에

        ActivityMainBinding activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
        activityMainBinding.button1.setText("TEST");

따로 정의할 필요 없이 그냥 .setText 해서 사용하시면 됩니다.

간단한 DataBindnig 사용 방법에 대해 알아봤습니다. 

DataBinding 활용 추가 글 작성도 곧 업로드 하도록 하겠습니다. 

 

아 Activity 말고 Fragment 사용은

위의 1번 2번 방법과 동일하며 

3번 .java 화면에서 

// View view = inflater.inflate(R.layout.fragment_detail, container, false);
기존 이렇게 사용하던 코드를


Fragmentbinding = DataBindingUtil.inflate(inflater,R.layout.fragment_detail, container, false);

이렇게 변경해주시면 됩니다.

 

감사합니다.

 

Sample Code Git : https://github.com/wp01053/DataBinding_Example

728x90