[Android] View Binding을 사용해보자

이현우·2020년 10월 17일
0
post-thumbnail

들어가며

안드로이드 스튜디오 4.1 버전이 릴리즈되고 kotlin extension 플러그인이 디폴트에서 해제되었다는 것을 알게되었다. 많은 문제점이 내재되었다는 것은 알고 있었으나 정작 사라지니 불편하기 짝이 없어서 내 코드에 findView뭐시기를 절대 안 쓰겠다는 마음가짐 하에 View Binding을 배우게 되었고 이를 공유하고자 한다.

View Binding

View Binding을 사용하면 XML과 쉽게 상호작용할 수 있는 코드를 작성할 수 있다. XML 안에 있는 내용은 View Binding을 사용하면 해당 액티비티에 관련된 Binding Class를 생성하고 이 멤버 변수(View의 id 값)에 접근함으로써 View에 접근할 수 있다.

참고로 이번에는 Activity에서 View Binding을 사용하는 방법을 보여주고자 한다. Fragment에서도 Activity와 마찬가지로 inflate되는 곳에서 binding을 설정해주면 된다.

이 View Binding은 Android Studio 3.6 이상에서 작동이 보장된다.

어떻게 하죠?

build.gradle (App 단위)

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

안드로이드 root 안에 viewBinding 태그를 만들고 enabled 속성을 true로 준다

Activity Code

View Binding을 사용하고자 하는 Activity에 Binding Class 변수를 선언한다.

  • Binding Class의 이름은 snake_case로 작성되었던 xml 파일명을 Pascal Case로 변환된 것과 같다.
private lateinit var binding: ActivityMainBinding

그리고 onCreate 단계에서 inflate 메서드를 호출하여 Binding Class 변수를 초기화한다.

override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ResultProfileBinding.inflate(layoutInflater)
}

그리고 binding 변수의 root 뷰를 가져와서 setContentView 메서드의 인자로 전달한다

override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ResultProfileBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
}

Result

이제 binding 변수를 어떻게 생성하면 될까? 이전 extension과 마찬가지로 binding 내의 view를 id로 참조하면 된다.

binding.view_id.attribute = anyString
profile
이현우의 개발 브이로그

0개의 댓글