Kotlin

[Kotlin] 뷰 바인딩(ViewBinding) 사용 방법

cob 2022. 9. 28. 09:02
뷰 바인딩이란?
각 XML 레이아웃 파일의 루트 뷰 및 ID가 있는 모든 뷰의 참조를 포함한 클래스를 자동으로 생성합니다. 이 클래스의 이름은 XML 파일의 이름을 카멜 표기법으로 변환하고 끝에 ‘Binding’을 추가하여 생성된다.
activity_main.xml → ActivityMainBinding

 

 


1. gradle 설정

andriod {
	...
	/* 안드로이드 스튜디오의 버전이 4.0 이상  */
	buildFeatures{
		viewBinding true
	}
    
	 /* 안드로이드 스튜디오의 버전이 4.0 이하  */
         viewBinding{
             enabled = true    
         }

}
  • Sync now눌러 설정 반영

 

 


2. 설정 추가 후 프로젝트 빌드

  • 일정 시간이 지나면 빌드가 완료
  • Run과 Build의 차이
    - Build : 빌드란 실행 가능한 형태의 파일(apk, jar, aar)을 만드는 과정
    - Run : 앱이 빌드되고 난 후 기기(에뮬레이터와 실제 단말)에 배포(실행)하는 과정

 

 

 


3. 액티비티 레이아웃에서 뷰 바인딩을 설정할 요소에 id를 셋팅

( MainActivity.kt )

class MainActivity : AppCompatActivity() {
	private lateinit var binding : ActivityMainBinding
	
	override fun onCreate(savedInstanceState: Bundle?) {
		super.onCreate(savedInstanceState)
	
		binding = ActivityMainBinding.inflate(layoutInflater)
					    // 1.바인딩 클래스의 객체 생성
		val view = binding.root     // 2.바인딩 객체의 root 뷰 참조
		setContentView(view)        // 3.생성한 뷰 설정
	}
}

1) 바인딩 클래스에 포함된 inflate() 함수를 실행해 바인딩 클래스의 객체를 생성

2) 모든 바인딩 클래스에는 getRoot() 함수가 존재, 새로운 변수 view를 만들고 바인딩 객체의 root뷰를 참조

3) setContentView 함수에 2)에서 생성한 변수 view를 넣어주어 화면에 보여줄 수 있게 한다.

 

 


4.  뷰 참조하기

binding.bindingButton.setOnclickListener {
		// 이벤트 로직
}
바인딩 클래스에서 자동으로 멤버 변수로 선언되었기 때문에 액티비티에서 바로 사용 가능
뷰 바인딩을 사용하여 어떤 뷰든지 id값만 알면 binding.[ID] 형식으로 해당 뷰를 참조할 수 있다.
  • 바인딩 클래스에서는 카멜 표기법을 사용 
    ex) tv_name → tvName, btn_login → btnLogin
반응형