Android Jetpack/AAC
뷰 바인딩 ViewBinding 사용법
wdadaww
2022. 12. 13. 17:39
- 뷰 바인딩이란?
- 레이아웃 xml 파일에 선언한 뷰 객체를 바인딩을 이용해 코드에서 쉽게 이용하는방법입니다.
- 예전에는 findViewByid() 함수로 얻어 뷰를 이용햇습니다.
그런데 한 화면을 구성하는데 많은 뷰가 필요하고, 또 뷰 는 대부분 코드에서 이용하기때문에
뷰 객체를 선언하고 모두 findViewByid함수를 통해 하나하나 가져와야대는 귀찮음잇어 뷰바인딩을 사용합니다.
- 빌드 그래들 모듈 설정
- 액티비티 뷰바인딩 (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)
}
}