Kotlin TIL(17) [ViewBinding]

jxxn_a·2023년 8월 24일
0

TIL

목록 보기
17/28

View Binding (뷰바인딩)

View Binding이란?

1) View Binding 기능을 사용하면 View와 상호작용하는 코드를 쉽게 작성할 수 있다.

2) 모듈에서 사용 설정된 View Binding은 모듈에 있는 각 XML 파일의 결합 클래스를 생성한다.

3) [ private lateinit var binding: ActivityMainBinding ]
mainActivity Class 안에 binding 클래스를 변수(var or val)로 선언하면 mainActivity와 연결된 xml 레이아웃 내에 있는 모든 위젯들을 끌어다 쓸 수 있다!!! ★★ (Feat. 민지님) ★★

4) findViewById를 대체한다.

findViewById와의 차이점

1) NullSafe

  • View에 아무것도 설정되지 않았을 때 View 속성을 사용하려고 하면 프로그램이 오류를 내는 것을 방지하기 위한 조치이다.
  • 레이아웃에서 일부 뷰를 생략할 때, 해당 뷰를 @Nullable로 표시하여 필드가 null일 수 있는 상황을 나타낸다.
    데이터 바인딩은 뷰와 데이터 모델 간의 연결을 관리하며, 이로 인해 뷰가 없는 경우에도 안전하게 작동할 수 있게 도와준다.

2) Type Safety

  • 각 바인딩 클래스에 있는 필드의 유형이 XML 파일에 있는 view와 일치한다.
  • 클래스 변환 예외가 발생 할 위험이 없다.
  • type을 가지고 있기 때문에 다른 경우 발생하는 오류를 방지 할 수 있다.

Kotlin에서 view Binding 설정 방법

1) gradle 설정

android {
	...
    
    // AndroidStudio 3.6 ~ 4.0
    viewBinding{
    	enabled = true
    }
    
    // AndroidStudio 4.0 ~
    buildFeatures{
    	viewBinding = true
    }
}

2) Activity에서 설정

class MainActivity : AppCompatActivity() {
  
  private lateinit var binding: ActivityMainBinding
  
  override fun onCreate(savedInstanceState: Bundle?) {
       super.onCreate(savedInStanceState)
       binding = ActivityMainBinding.inflate(layoutInflater)
       val view = binding.root
       setContentView(view)
  • 클래스를 만들기 위해 위에 코드와 똑같이 작성해준다.
  • inflate는 xml에 있는 뷰를 객체화해준다고 생각하면된다. 원래는 R.layout.activity_main을 넘겨주지만 이번에는 생성한 루트 뷰를 넘겨준다.

3) Binding된 객체 안에 있는 id에 접근하기

binding.button1.text = "안녕"
binding.button2.setBackgroundColor(Color.BLACK)

5개의 댓글

comment-user-thumbnail
2023년 8월 25일

기다리고 기다리던 TIL이 드디어.... 회원님 오늘도 기대하겠습니다 ^~^
강의 순서대로라면 오늘은 리사이클러뷰이겠네요! 유익한 정보 기대중입니다 ㅎㅎㅎ♥

1개의 답글
comment-user-thumbnail
2023년 8월 25일

리사이클러뷰 기대되요!

1개의 답글