Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

한걸음안드로이드

[Android Kotlin] View Binding 안드로이드 코틀린 뷰 바인딩 본문

Android Kotlin

[Android Kotlin] View Binding 안드로이드 코틀린 뷰 바인딩

한걸음안드로이드 2021. 4. 28. 11:43

코틀린 안드로이드 익스텐션이 2021부로 폐기됩니다.

이제 더이상 id값으로 직접 참조하는게 불가능 해졌습니다.

하지만 뷰 바인딩을 사용하면 간접적으로 id 참조가 가능합니다!


뷰 바인딩은 xml 레이아웃 파일에서 지정한 id 값으로 뷰를 직접 참조하는 방식을 말합니다.

예시) Binding.textview.text = "Hello World"

 

findviewbyid를 사용하지 않고 id를 직접 사용하기 때문에 코드도 간결해지고 다른 뷰를 참조하거나 null을 발생시킬 일도 없습니다.

 

먼저 안드로이드 공식 개발자 문서부터 확인합시다.

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

 

뷰 결합  |  Android 개발자  |  Android Developers

뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 클래스의

developer.android.com

역시 공식 문서 답게 복잡해 보이지만 결국 이겁니다.

 

1. 바인딩할 xml 레이아웃 파일을 지정한다.

2. 지정한 레이아웃을 액티비티에 결합시킨다.

3. 뷰를 레이아웃에서 id로 직접 찾아서 사용한다. (findviewbyid로 일일이 지정할 필요가 없음)

 

우선 뷰 바인딩을 하려면 build.gradle.app에

1
2
3
4
5
6
7
android {
        ...
        viewBinding {
            enabled = true
        }
    }
    
cs

위 코드를 추가해 줍니다.

뷰를 바인딩할 액티비티의(여기선 MainActivity) onCreate 함수에 넣습니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
   
    // 레이아웃을 지정할때 카멜케이스(단어 앞 대문자)로 변경후 뒤에 Binding을 붙이는 식으로 지정한다
    // 예) activity_main.xml -> ActivityMainBinding
     private lateinit var binding: ActivityMainBinding // 레이아웃 지정하여 변수에 저장
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
    }
    
cs

 

바인딩을 사용할때는 이렇게 사용합니다.

 

1
2
3
    binding.name.text = viewModel.name
    binding.button.setOnClickListener { viewModel.userClicked() }
    
cs

 

 

 

Comments