[TIL] #22 View Binding

Yeon·2023년 8월 22일
0

내일배움캠프 - Kotlin

목록 보기
32/58
post-thumbnail

View Binding vs. findViewById

안드로이드 앱 개발에서 뷰 요소를 코드에서 찾는 데 사용되는 두 가지 다른 접근 방식이 있는데, findViewByIdView Binding이 있다.

1) View Binding

  • 안드로이드 스튜디오 3.6부터 도입된 기술
  • 뷰 요소를 바인딩하여 코드에서 더 안전하고 효율적으로 사용할 수 있게 해줌
  • XML 레이아웃 파일에 대한 바인딩 클래스를 생성하여 사용함
    • 자동으로 클래스 파일을 생성해주기 때문에 직접 id를 적고 타입을 정하는 등의 작업을 하지 않아도 됨
// 뷰 바인딩 활성화
val binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)

// 뷰 요소에 접근
binding.buttonId.setOnClickListener {
    // 버튼 클릭 시 동작
}
  • NullSafe
    • 뷰의 Direct References를 생성하므로 유효하지 않은 id로 인한 null 오류가 발생 할 위험이 없음
    • 컴파일 시점에 뷰 ID 오류를 확인할 수 있음
    • 뷰 요소에 접근할 때 타입 안전성을 보장함
  • Type safety
    • 클래스 변환 예외가 발생할 위험이 없음
  • findViewById에 비해 더 간결하고 가독성이 좋은 코드를 작성할 수 있음

2) findViewById

  • 안드로이드의 기본적인 뷰 검색 메서드
  • 이 메서드로 XML 레이아웃 파일에서 정의한 뷰 요소를 코드에서 찾아와 조작할 수 있음
val button = findViewById<Button>(R.id.buttonId)
button.setOnClickListener {
    // 버튼 클릭 시 동작
}
  • NullSafe
    • 개발자가 실수로 유효하지 않은 id를 사용하면 null 오류가 발생할 수 있음
  • Type safety
    • 뷰 요소의 타입 캐스팅이 필요하므로 타입 안전성이 떨어질 수 있음
    • 뷰 요소의 ID가 변경되면 컴파일 시 오류를 감지할 수 없음
  • 계층 구조가 복잡한 경우 코드가 장황해질 수 있음

➕ Configuration with View Binding Enabled

Gradle Configuration

뷰 바인딩을 사용하려면 build.gradle.kts(Module :app) 파일도 설정도 해야 한다!!

android{
	...
    
    // AndroidStudio 3.6 ~ 4.0
    viewBinding{
    	enabled = true
    }
    
    // AndroidStudio 4.0 ~
    buildFeatures{
    	viewBinding = true
    }
}

➕ Binding Class Name

xml과 연결되는 바인딩 클래스가 자동으로 생성되며 그 클래스의 멤버로 xml의 ID를 가진 모든 뷰를 참조하는 참조 변수가 있다.

바인딩 클래스는 정해진 명명 규칙에 따라서 만들어진다!

ex.
activity_main.xmlActivityMainBinding
fragment_first.xmlFragmentFirstBinding
recycler_item.xmlRecyclerItemBinding




[참고 사이트]

'뷰 결합', developer

'[Android] 뷰 바인딩(view binding)이 뭘까?', snack655.log

0개의 댓글