우리는 안드로이드 개발을 하면서 Layout에 있는 Button, TextView 등 값을 변경, 클릭 등 이벤트에 대한 동작을 처리하기 위해 findViewById를 사용하여 뷰 객체를 가져와 사용하였다.
만약 Layout에서의 뷰 객체가 많아지고 모두 이벤트 동작을 처리해줘야 할 때, 이와 같은 방법은 비효율적일 것이다.
뷰 객체가 10개일 경우, findviewbyid로 뷰 객체 선언을 10번을 해주어야 하기 때문이다.
Viewbinding은 이러한 문제점을 해결한 findviewbyid를 대체하는 기능이다.
공식문서
https://developer.android.com/topic/libraries/view-binding?hl=ko
사용법
1. setting
제일 처음으로 build.gradle(Module) 파일에 들어가서 다음과 같이 추가해준다.
build.gradle(Module)
android{
...
buildFeatures{
viewBinding true
}
}
android {
안에 아무대나 추가해주면 된다.
}
선택 사항
만일 viewbinding을 사용하지 않을 xml이 있다면 해당 xml에 다음과 같이 선언해준다.
<LinearLayout
...
tools:viewBindingIgnore="true" >
...
</LinearLayout>
2. Activity 사용
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.textid.text = "텍스트 내용"
}
}
XML에서는 따로 설정해줄 건 없고, 뷰 객체의 id만 잘 설정해주면 된다.
그럼 binding 클래스 파일이 자동으로 생성이 되는데
이름은 xml 파일 이름이 activity_main.xml 이라면 ActivityMainBinding 으로 생성된다.
Activity 클래스에서는 초기에 위의 코드와 같이 binding 변수를 초기화해주고 setContentView에 binding.root를 세팅해주면 모든 것이 끝이 났다.
이제 사용하고자 하는 뷰 객체의 아이디를 이용하여 binding.뷰객체아이디 로 findviewbyid를 사용하지 않고도 이벤트를 처리해 줄 수 있다.
만일 TextView를 사용하고자 하며, 사용하고자 하는 TextView의 id가 textid라 했을 때 위의 코드와 같이
binding.textid.text = "내용"
사용해 줄 수 있다.
'안드로이드 > 안드로이드' 카테고리의 다른 글
[안드로이드] 푸쉬 알림 (기초) (1) | 2023.11.22 |
---|---|
[안드로이드] AlertDialog (0) | 2023.11.22 |
[Kakao Api] 키 해시 생성 및 플랫폼 등록 (1) | 2023.11.04 |
[안드로이드] 이미지 Glide (0) | 2023.11.03 |
[안드로이드] 안드로이드 생명주기 (0) | 2023.11.03 |