IDE/AndroidStudio

안드로이드 뷰 바인딩 (Android View Binding)

서리★ 2024. 7. 12. 11:07

1. 뷰 바인딩 (View Binding)

 뷰 바인딩(View Binding)은 안드로이드 스튜디오에서 제공하는 기능으로, XML 레이아웃 파일에 대해 자동으로 생성된 클래스를 통해 각 뷰에 쉽게 접근하고 조작할 수 있게 해준다. 이를 통해 findViewById 메서드를 사용하지 않고도 레이아웃의 뷰에 접근할 수 있다.

 

 


 

2. 뷰 바인딩의 장점

1) 간결한 코드: 뷰를 참조하기 위해 반복적으로 findViewById를 호출하지 않아도 되어 코드가 간결하다.
2) 자동 생성 클래스: 각 레이아웃 파일에 대해 자동으로 생성된 클래스를 통해 뷰에 쉽게 접근할 수 있다.

 

 


 

3. 뷰 바인딩 설정 및 사용 방법

 

1) 프로젝트에 뷰 바인딩 설정

 build.gradle.kts(Module :app) 파일에 buildFeatures { viewBinding = true }를 적고 sync now를 반드시 해줘야 한다.

 

📑 GradleScripts > build.gradle.kts(Module :app)

android {
    ...
    
    // 뷰 바인딩 허용
    buildFeatures {
        viewBinding = true
    }
}

 

2) XML 레이아웃 파일

예시를 위해 textView와 button을 추가해주었다.

 

📑 app > res > layout > activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!" />

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click Me" />
    </LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

 

3) MainActivity에서 뷰 바인딩 적용

① binding 객체 선언

② binding 객체 할당

③ id를 통하여 뷰에 접근하여 조작

 

📑 app > kotlin+java > com.example.exbinding > MainActivity.class

package com.example.exbinding

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.jaehyodev.exbinding.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
	
    // binding 객체 선언
    lateinit var binding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // binding 객체 할당
        binding = ActivityMainBinding.inflate(layoutInflater);
        // 루트 뷰를 설정하여 화면에 표시
        setContentView(binding.root);
        
        // textView라는 id를 가진 뷰의 텍스트를 변경
        binding.textView.setText("Hello, View Binding!");
        
        // button이라는 id를 가진 뷰를 클릭했을 때
        binding.button.setOnClickListener {
            // textView라는 id를 가진 뷰의 텍스트를 변경
            binding.textView.setText("Button Clicked!")
        };
    }
}

 


 

4. 결론

 뷰 바인딩은 안드로이드 개발에서 findViewById를 사용하지 않고도 뷰에 안전하고 간편하게 접근할 수 있게 해주는 유용한 기능이다. 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있다.