안드로이드 코딩 시 레이아웃에 있는 ID를 FindViewByID로 가져오는 단계없이

바로 쓸 수 있게 해주는 기능.

코틀린 초기에는 코틀린 익스텐션(플러그인)을 이용하였으나 Layout이 많아질 수록 명확성이 떨어짐

ViewBinding 사용 권장

 

- Activity와 Fragment에서 사용법이 차이가 있음.

- 안드로이드스튜디오 버전에 따라서도 차이가 있음.

- 4.0 버전대 안드로이스 스튜디오 사용중.

- Layout이 추가 될 때마다 해줘야 하는건가(?)

- View가 있고 Layout을 만들었다면 해줘야 하는듯함.

 

 

build.grading(Module: app) android 블록 안에 뷰바인딩 사용을 명시

   buildFeatures{
    viewBinding = true
 } 

 

⁂ Activity에서 사용방법:

  액티비티명이 MainActivity 일 경우 자동으로 생성되는 바인딩 클래스명은 ActivityMainBinding.

   Layout 파일명이 바인딩 클래스 명이 되는듯. 바인딩 후 setContentView 인자에 변화가 있음.

 val biding : ActivityMainBinding = ActivityMainBinding.inflate(layoutInflater)
 setContentView(binding.root)

 

⁂ Fragment에서 사용방법

 private var _binding: ActivityMainBinding? = null
      private val binding get() = _binding!!
      
      overriding fun onCreateView (inflater: LyaoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
      	_binding = ActivityMainBinding.inflate(inflater, container, false)
        val view = binding.root
        return view
		
        
        overrid fun onDestroyView() {
        	super.onDestroyView()
            _binding = null
        }

참고한 강좌:

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

2. https://youtu.be/J_e8N7vwCFI 

Posted by 감성소음