본문 바로가기
안드로이드 프로그래밍/Android

[Android] view binding

by 1chanhue1 2023. 9. 28.

 

 

view binding은 이 findViewById를 대체할 수 있는 기능이다.

 

뷰 바인딩을 사용하면 직접 id를 적고 타입을 정하고 이런 작업을 하지 않아도 된다.

자동으로 클래스 파일을 생성해주기 때문이다.

 

 

왜 사용하나 ? 

 

기존 findViewById에는 몇가지 문제점이 존재합니다.

 

  1. 코드가 더러워짐 ( 관리해야 될 버튼이 20개 일 경우 findViewId() 만 20번 쓰임 
  2. 실수로 없는 id를 사용하면 NULL 오류가 발생합니다.
  3. 실수로 뷰의 타입을 잘못 적으면 오류가 발생합니다.
    ex. TextView -> ImageView

 

 

사용법  ? 

gradle 파일에 추가

// 안드로이드 스튜디오 3.6 ~ 4.0
android {
    ...
    viewBinding {
        enabled true
    }
}

 

바인딩 클래스 이름의 규칙 

Activity 이름 Binding 클래스 이름
MainActivity ActivityMainBinding
SubActivity ActivitySubBinding
XXActivity ActivityXXBinding

 

 

엑티비티에서의 바인딩 

package com.example.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.myapplication.databinding.ActivityMainBinding


class MainActivity : AppCompatActivity() {


    private lateinit var binding:ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)



        // 1. 바인딩 클래스의 inflate() 메서드를 호출해 binding이라는 이름으로 인스턴스를 생성한다.
        binding = ActivityMainBinding.inflate(layoutInflater)



        // 2. getRoot 메서드로 레이아웃 내부의 최상위 위치 뷰의
        //    인스턴스를 활용하여 생성된 뷰를 액티비티에 표시
        val view = binding.root
        setContentView(view)

        // 3. binding 바인딩 변수를 활용하여 마음 껏 xml 파일 내의 뷰 id 접근이 가능
        binding.button1.text="바인딩"


    }
}

 

 

 

Android 개발 문서 참고 https://developer.android.com/topic/libraries/view-binding?hl=ko