[Android] ViewBinding

Jbro·2023년 8월 5일
0

Android 기초

목록 보기
1/23
post-thumbnail

Android의 ViewBinding은 XML 파일과 코틀린 코드를 Binding하여 효율적으로 레이아웃을 관리할 수 있게 해주는 기술이다.

ViewBinding을 사용하면 기존에 findViewById() 메서드를 통해서 View들에 접근하는 방식보다 쉽게 접근할 수 있다.

ViewBinding
reslayout 폴더에 있는 xml 파일 하나당 하나의 클래스가 만들어진다.
이 클래스에는 xml 파일이 가지고 있는 View들을 관리하는 기능이 들어가 있다.
이를 통해면 개발자가 View를 직접 추출하지고 사용할 수 있다.
안드로이드 OS가 알아서 View를 추출하여 변수에 담아준다.

ViewBinding을 사용하기 위해서는 일단
앱 수준의 Gradle 파일에 ViewBinding 세팅을 위한 다음 코드를 작성해야 한다.

android {
    ...
    viewBinding {
        enabled = true
    }
}

ViewBinding을 활성화하면 XML 파일의 이름에 대응하는 ViewBinding 클래스가 자동으로 생성되는데, 예시는 다음과 같다.

  • activity_main.xml: ActivityMainBinding
  • activity_second.xml -> ActivitySecondBinding
  • blank_fragment.xml: FragmentBlank

다음은 ViewBinding을 이용해 작성한 예시 코드이다.

class MainActivity : AppCompatActivity() {
    // 생성된 ViewBinding 객체에는 View의 ID와 동일한 이름의 변수가
    // 만들어지고 그 변수에는 View 객체가 들어가 있다.

    // ViewBinding 객체를 담을 변수
    lateinit var activityMainBinding:ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // ViewBinding 객체를 가져온다.
        // layoutInflater : XML 파일을 통해 객체를 생성하는 도구
        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)

        // Viewbinding 객체가 관리하는 View 중에 최 상위 View를
        // 지정하여 화면에 나타나게 한다.
        setContentView(activityMainBinding.root)

        activityMainBinding.run {
            button.run{
                setOnClickListener {
                    activityMainBinding.textView.text = "10 - 10 = ${10 - 10}"
                }
            }

            button2.run{
                setOnClickListener {
                    activityMainBinding.textView.text = "10 - 10 = ${10 - 10}"
                }
            }

            button3.run{
                setOnClickListener {
                    activityMainBinding.textView.text = "10 * 10 = ${10 * 10}"
                }
            }

            button4.run{
                setOnClickListener {
                    activityMainBinding.textView.text = "10 / 10 = ${10 / 10}"
                }
            }
        }
    }
profile
안드로이드 개발자 꿈나무

0개의 댓글