viewBinding은 레이아웃 XML 파일에 선언한 뷰 객체를 코드에서 쉽게 이용하는 방법이다. activity에서 findViewByID() 함수를 이용하지 않고 xml 파일에 등록된 뷰 객체를 더 쉽게 사용하기 위해 탄생하게 되었다.
viewBinding을 이용하여 각 activity 간의 데이터를 전달하려고 한다.
그러기 위해선 우선 bulid.gradle에 다음과 같이 코드를 넣어야한다
viewBinding{
enabled = true
}
실제 예시
이를 하게되면 레이아웃 XML파일에 등록된 뷰 객체를 포함하는 클래스가 자동으로 만들어지게 된다. 자동으로 만들어지는 클래스의 이름은 레이아웃 XML의 파일명을 따른다.
자동 생성 예시
activity_main.xml -> ActivityMainBinding
이렇게 자동으로 만들어진 클래스의 inflate() 함수를 호출하면 바인딩 객체를 얻을 수 있다. 이때 인자로layoutInflater를 전달한다.
바인딩 객 체의 root 프로퍼티는 XML의 루트 객체가 자동으로 등록 되므로 화면 출력은 setContentView() 함수에 activityMainBinding.root를 전달하면된다.
실제 예시
lateinit var activityMainBinding: ActivityMainBinding <중략> activityMainBinding = ActivityMainBinding.inflate(layoutInflater)이와 같이 선언함으로써 activity_main.xml의 viewBinding을 해냈다.
이후 activityMainBinding를 사용하는 부분은 아래와 같다.activityMainBinding.run{ textView.run { setText("김명석") } buttonMainToSecondActivity.run{ setOnClickListener { val intent = Intent(this@MainActivity, SecondActivity::class.java) intent.putExtra("머리", "김명석은 빡빡이가 아닙니다.") startActivity(intent) } } }
위 와 같은 XML 의@+id/~~~형태로 이루어진 id를 .run을 사용하여 관련 함수들을 편리하게 사용할 수 있다.intent에 대한 내용은 추후 다루기로 한다.