기존에 extention으로 바로 xml의 아이디를 가져다가 쓰거나 findViewById를 사용하였는데 이를 대체하는 Viewbinding이 등장하였다. 이전것과 다른 가장 큰 특징은 xml파일에서 id를 설정하지 않으면 .kt에서 불러서 사용될 수 없다는 점인데 나는 개인적으로 이 점이 불러서 사용할 때 필요한 것만 이름지어주면 바로 찾아서 쓸수 있어서 더 깔끔하다는 생각이 들어 좋은것같다.
android {
...
viewBinding {
enabled = true
}
}
첫줄의 아이디를 주목해보자
<ImageView
android:id="@+id/btn_to_signup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:src="@drawable/sign_up_text"
/>
처음에 binding을 lateinit으로 선언하고 이후에 binding에 대한 내용을 정의한 후 contintView로 binding.root를 지정한다. 이전에 btn_to_signup으로 id를 직접 불러와서 사용했던것이 binding.btnToSignup으로 바뀌어 사용했다는 점이 다른데, 이렇게 언더바가 카멜케이스로 바뀌었다는 것을 확인할 수 있다. 이후 사용법은 동일하다.
class LoginActivity : AppCompatActivity() {
private lateinit var binding: ActivityLoginBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
binding = ActivityLoginBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
//btn_to_signup.setOnClickListener {
binding.btnToSignup.setOnClickListener {
startActivity(Intent(this, SignupActivity::class.java))
}
}
}
매일 예시들이 많으니 도움이 됩니다 😊