view binding은 이 findViewById를 대체할 수 있는 기능이다.
뷰 바인딩을 사용하면 직접 id를 적고 타입을 정하고 이런 작업을 하지 않아도 된다.
자동으로 클래스 파일을 생성해주기 때문이다.
왜 사용하나 ?
기존 findViewById에는 몇가지 문제점이 존재합니다.
- 코드가 더러워짐 ( 관리해야 될 버튼이 20개 일 경우 findViewId() 만 20번 쓰임
- 실수로 없는 id를 사용하면 NULL 오류가 발생합니다.
- 실수로 뷰의 타입을 잘못 적으면 오류가 발생합니다.
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
'안드로이드 프로그래밍 > Android' 카테고리의 다른 글
[Android] 액티비티(Activity)와 생명주기(Lifecycle) (2) | 2024.09.13 |
---|---|
[Android] 안드로이드 4대 컴포넌트에 대해서 알아보자. (3) | 2024.09.11 |
[안드로이드] Hilt에서 @Binds와 @Provides의 차이 (0) | 2024.09.10 |
[Android] Linearlayout , layout_weight 속성 (0) | 2023.09.26 |