본문 바로가기
안드로이드

안드로이드-뷰바인딩

by minsol Kim 2022. 2. 15.

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()
    }

댓글