*뷰 바인딩(View Binding)
-뷰에대한 접근, 뷰에 접근해서 값을 입력하거나 사용자와 상호작용하는 방식
-기존의 findViewById()를 대체해 사용하던 코틀린 익스텐션을 사용했지만 2021년 9월 기준으로 완전제거됨
-코틀린 익스텐션을 개선한 것이 뷰 바인딩
-뷰 바인딩은 레이아웃 파일이 사용되는 모든 곳에서 코틀린 익스텐션 대체 가능
-액티비티, 프래그먼트, 어탭터에서 각각의 사용법이 다름
*코틀린 코드와 레이아웃 연결(뷰 바인딩 방식을 사용해 뷰와 코드를 연결)
1. 뷰 바인딩 설정 추가
-안드로이드 스튜디오 프로젝트 생성
-build.gradle 파일
-andriod{} 안에 뷰 바인딩 설정 추가
//뷰바인딩
buildFeatures{
viewBinding true
}
-안드로이드 스튜디오 상단 Sync Now
2. 코틀린 파일에서 레이아웃 파일을 자동변환 공식에따라 바인딩으로 생성
--자동변환공식 : 레이아웃 파일명(첫 글자와 언더바 다음 글자를 대문자로 변환) + Binding
--자동변환공식 예 : activity_main.xml = ActivityMainBinding
-MainActivity.kt 파일
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
3. 변수에 저장된 바인딩의 root뷰 setContentView에 전달
setContentView(binding.root)
4. 바인딩을 도트연산자(.)로 뷰 id에 접근
binding.textView.text = "Hello"
*MainActivity.kt 전체 코드 설명
class MainActivity : AppCompatActivity() {
//build.gradle (:app)에 뷰 바인딩 설정 추가
//자동변환 공식으로 레이아웃파일 생성 ActivityMainBinding
//클래스로 변환된 바인딩의 inflate함수에 layoutInflater를 전달하여 초기화 하고 변수에 저장
//함수에 전달되는 layoutInflater : MainActivity가 가지고 있음, 모든 Activity에서 호출 가능
val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//변수에 저장된 바인딩의 root뷰를 setContentView에 전달
//setContentView(R.layout.activity_main)
setContentView(binding.root)
//바인딩을 도트 연산자(.)로 뷰(연결한 xml)의 id에 접근 후 사용
binding.textView.text = "Hello"
}
}
이 포스팅에 작성한 내용은 고돈호, ⌜이것이 안드로이드다⌟, 한빛미디어(주), 2022 에서 발췌하였습니다.
'Android App > Kotlin' 카테고리의 다른 글
Activity, Context, Intent (0) | 2022.11.09 |
---|---|
4대 메이저 컴포넌트-Activity, Broadcast Receiver, Service, Content Provider (0) | 2022.11.09 |
위젯 사용예제-라디오버튼, 체크박스, 프로그래스바 (0) | 2022.11.03 |
위젯-RatingBar (0) | 2022.11.03 |
위젯-SeekBar (0) | 2022.11.03 |