[android] viewBinding

dyke·2022년 8월 3일

android

목록 보기
4/5
post-thumbnail

(참고) 제가 작성하는 android studio의 기준은
Chipmunk 2021.2.1 Patch 1 입니다.

viewBinding

  • 뷰와 상호작용하는 코드를 쉽게 작성. (findViewById보다 속도가 빠름.)
  • 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성
  • binding class의 인스턴스에는 상응하는 레이아웃에 ID가 있는 모든 뷰의 직접 참조가 포함됨.
  • ex) binding으로 버튼 id를 가져와서 토스트 띄우기!
    build.gradle에 정의
android {
        ...
        viewBinding {
            enabled = true
        }
    }

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.498"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.example.myapp.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        //뷰 바인딩 사용
        val binding = ActivityMainBinding.inflate(layoutInflater)

        //화면안에 있는 요소들 사용가능.
        setContentView(binding.root)

        //binding에서 id를 통해 바로 사용가능.
        binding.btn.setOnClickListener(View.OnClickListener {
            Toast.makeText(
                this,
                "ViewBinding",
                Toast.LENGTH_LONG).show()
        })
    }
}

결과

profile
web full-stack 지향하는 코린이

0개의 댓글