findViewById()에서 뷰 객체를 얻는 것보다 간편하여 뷰바인딩을 사용한다.
1. 모듈 gradle 에서 뷰바인딩 클래스 생성
buildTypes {
buildFeatures {
viewBinding true
}
2. 뷰바인딩 클래스 이름 규칙
레이아웃: activity_main.xml -> 뷰바인딩클래스명: ActivityMainBinding
레이아웃: activity_sub.xml -> 뷰바인딩클래스명: ActivitySubBinding
3. Activity에서 사용
액티비티에서 lazy를 사용해 처음 호출 시에 초기화 되도록 binding 프로퍼티를 선언한다.
setContentView에서 binding.root를 꼭 전달한다.
class MainActivity : AppCompatActivity() {
val binding by lazy{
ActivityMainBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
4. 활용하기
바인딩이 프로퍼티로 선언되었기 때문에 액티비티 전체에서 호출이 가능하다. 이제 레이아웃의 뷰 객체를 활용하기 위해 뷰아이디를 선언한다.
<EditText
android:id="@+id/etText"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:hint="Student ID"/>
binding.위젯.id.속성 ="값" 으로 설정한다.
binding.btnMove.setOnClickListener{
val str = binding.etText.text.toString()
val str2 = binding.et2Text.text.toString()
}
'안드로이드' 카테고리의 다른 글
안드로이드 - Constraint Layout (0) | 2022.02.16 |
---|---|
안드로이드 - Table Layout (0) | 2022.02.15 |
안드로이드 - Linear Layout 속성 (0) | 2022.02.11 |
안드로이드- 로그인 창 응용 (0) | 2022.02.10 |
안드로이드 -로그인화면 구현하기 (0) | 2022.02.05 |
댓글