뷰 바인딩 ViewBinding 사용법

2022. 12. 13. 17:39Android Jetpack/AAC

  • 뷰 바인딩이란?
  • 레이아웃 xml 파일에 선언한 뷰 객체를  바인딩을 이용해 코드에서  쉽게 이용하는방법입니다.
  • 예전에는 findViewByid() 함수로 얻어 뷰를 이용햇습니다.

그런데  한 화면을 구성하는데  많은 뷰가 필요하고, 또 뷰 는 대부분 코드에서 이용하기때문에

뷰 객체를 선언하고 모두 findViewByid함수를 통해 하나하나 가져와야대는 귀찮음잇어 뷰바인딩을 사용합니다.

 

 

  • 빌드 그래들 모듈 설정

 

이렇게 하면 레이아웃 xml파일에 등록 된 뷰객체를 포함하는 클래스가 자동으로 만들어집니다.

  •  액티비티 뷰바인딩  (MainActivity.kt)
class MainActivity : AppCompatActivity() {
   //뷰바인딩 객체 타입에 ?을 붙여서 null을 허용해줘야한다.(onDestroy 될때 완벽하게 제거하기위해)
    private var mBinding: ActivityMainBinding? = null
    // 매번 null 체크를 할 필요없이 편의성을 위해 바인딩 변수 재선언!
    private val binding get() = mBinding!!

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

// 늦은초기화할 바인딩 변수선언
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //초기화시점
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

 

 

  • 프래그먼트 뷰바인딩 (Fragment.kt)
class MypageFragment : Fragment(R.layout.fragment_mypage) {
    private var mBinding: FragmentMypageBinding? = null
    private val binding get() = mBinding!!
    

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        mBinding = FragmentMypageBinding.bind(view)
        ../
    class HomeFragment : Fragment(R.layout.fragment_home) {
    private lateinit var binding: FragmentHomeBinding
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        binding = FragmentHomeBinding.bind(view)
        }
      }

'Android Jetpack > AAC' 카테고리의 다른 글

데이터 바인딩 - Repository pattern 적용해보기.  (0) 2023.02.16
DataBinding 과 BindingApdater  (0) 2023.01.16
ViewModel 과 LiveData  (0) 2023.01.12
DataBinding 사용법  (0) 2023.01.12