본문 바로가기
안드로이드

안드로이드 View Binding

by 김어찐 2022. 6. 26.
728x90

Android Studio의 버전이 변경되면서 추가된 라이브러리

기존의 androidx를 통해 View의 주소값을자동으로받아오는 것은 Kotlin 밖에 되질않아 이를 자바에서 사용할 수 있도록 추가한 라이브러리

layout 폴더에 있는 xml 파일을 관리하는 클래스를 자동 생성하여 이를 통해 View를 관리할 수 있는 개념

layout 폴더에 있는 xml 파일당 하나의 클래스가 생성되며 이 클래스에는 xml 파일에 배치한 Viwe들을 관리할 수 있는 기능이 구현되어 있다.

이를 통해 View들을 손쉽게 관리할 수 있다.

 

build.gradle 설정

 

 

 

 액티비티에서 사용하기

val binding by lazy { 레이아웃파일명Binding.inflate(layoutInflater)}

 

프래그먼트에서 사용하기

// onCreateView() 안에서 다음과 같이 사용됩니다

var binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(container.context),container,false)

 

// OnCreateViewHolder()안에서 다음과 같이 사용됩니다.

var binding = 레이아웃파일명Binding.inflate(LayoutInflater.from(parent.context),parent,false)

어댑터에서 사용하기

 

package com.example.viewbinding

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.viewbinding.databinding.ActivityMainBinding
import com.example.viewbinding.databinding.ActivitySecondBinding

class MainActivity : AppCompatActivity() {
    // Binding 객체를 담을 변수
    lateinit var binding: ActivityMainBinding
    lateinit var binding2: ActivitySecondBinding

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

        // Binding 객체를 추출한다.
//        binding = ActivityMainBinding.inflate(layoutInflater)
        binding2 = ActivitySecondBinding.inflate(layoutInflater)
        // 화면을 셋팅한다
        setContentView(binding2.root)
//        setContentView(R.layout.activity_main)

        binding2.button.setOnClickListener {
            binding2.textView.text = "버튼을 눌렀습니다"
        }

    }
}

 

 

728x90