안드로이드 세계

[Android] ViewBinding (뷰바인딩) 본문

안드로이드(Android)/이론

[Android] ViewBinding (뷰바인딩)

리안94 2021. 1. 13. 00:18

편하게 사용되던 Kotlin-extension이 Deprecated 됨에 따라(Android Studio Version 4.1.1 기준) 일반적으로 사용하던 findViewById를 사용하거나 ViewBinding, DataBinding을 사용하는 것이 좋다. 그렇기 때문에 주로 사용하던 findViewbyId는 제외하고 이번 포스팅에는 ViewBinding, 다음 포스팅에는 DataBinding을 정리할 것이다.

 

ViewBinding?

  • 뷰와 상호작용하는 코드를 쉽게 작성할수 있으며, 각 xml레이아웃 파일의 binding 클래스를 생성합니다.
  • findViewById를 대체합니다.

ViewBinding 사용법

  • build.gradle
android {
        ...
        viewBinding {
            enabled = true
        }
    }
  • layout에 지정한 xml이름에 따라서 binding클래스가 작성됩니다.(activity_main -> ActivityMainBinding)
  • Activity
class MainActivity : AppCompatActivity(){

	private lateinit var binding: ActivityMainBinding

	override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    }
    
}

이렇게 작성을하게되면 이제 다음과 같이 xml아이디를 참조할 수 있다.

binding.textView.text = "Test"

 

  • Fragment
class TestFragment : Fragment(){
	
    private var _binding: TestFragmentBinding? = null
    private val binding get() = _binding!!
    
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        _binding = TestFragmentBinding.inflate(inflater, container, false)
        return binding.root
    }
    
    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

}

액티비티와 마찬가지로 xml아이디를 참조할 수 있다.

binding.textView.text = "Test"

 

ViewBinding 사용 이유

  • findViewById나 Kotlin-extension(Deprecated)는 null safety가 아니지만 ViewBinding은 null safety이다.
  • 클래스 변환 예외가 발생할 위험이 없다.

DataBinding과의 차이점

  • 주석처리가 필요하지 않으므로 더 짧은 컴파일 시간을 가집니다.
  • ViewBinding에는 특별히 태그 된 XML레이아웃 파일이 필요하지 않아 앱에서 더 신속하게 채택 가능.
  • ViewBinding은 레이아웃 변수 및 표현식을 지원하지 않아 동적 UI 콘텐츠 선언은 불가능하다.
  • 양방향 데이터 결합을 지원하지 않음.

해당 내용을 더 자세히 알고 싶다면 아래 링크를 한번 보는 것이 좋을 것 같다.

developer.android.com/topic/libraries/view-binding?hl=ko

 

뷰 결합  |  Android 개발자  |  Android Developers

뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 클래스의

developer.android.com

 

Comments