728x90
반응형
DataBinding
build.gradle: Module
...
buildFeatures {
dataBinding true
}
....
Gradle에 dataBinding을 적용해준 뒤, 액티비티의 레이아웃 코드를 다음과 같이 바꿔준다.
<RelativeLayout
....>
</RelativeLayout>
아래와 같이 바꿔준다.
<layout>
<RelativeLayout
....>
</RelativeLayout>
</layout>
마지막으로 액티비티의 코드를 수정
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
}
}
이때 binding의 타입은 해당 액티비티의 레이아웃 파일 이름에따라 달라진다.
현재 MainActivity의 레이아웃 파일 이름은 activity_main.xmll이다.
그렇다면 binding의 타입은 activity -> Activity, _ 제거, main -> Main + Binding이 된다.
예를들어 액티비티의 레이아웃 이름이 search_activity.xml 이라면
activity -> Activity,
_ 언더바 제거,
search -> Search
=> ActivitySearchBinding이 된다.
이렇게 바인딩을 해두면, findViewById를 일일히 사용하지 않고 binding.아이디 와 같이 접근할 수 있다.
지금 과정은 정확히는 데이터바인딩이 아니라 뷰바인딩만 한 상태이다.데이터 바인딩까지 적용해주면 프로그램적으로 위젯에 값을 넣지 않고 view에서 변수의 값을 읽어서 스스로 값을 받아가게 할 수도 있다.
재작년까지만해도 코드에서 바로 아이디에 접근하는 기능을 제공해줬는데,어느샌가부터 적용이 안되기 시작하더니 지금은 아예 못쓰게 해놓은 것같다.
처음에는 불편했지만, MVVM을 공부하며 데이터바인딩을 사용해본 결과, 확실히 코드도 깔끔해지고 생각보다 어렵지 않게 사용할 수 있다는 점이 마음에 들었다. (물론 디자인패턴을 말하는 건 아니다... 넘 어렵..)
728x90
반응형
'Android' 카테고리의 다른 글
| [Android] 배포용 앱 개발시 주의할 점 (0) | 2021.10.09 |
|---|---|
| [Android/Mac] Mac에서 안드로이드 스튜디오 설치하기 (0) | 2021.10.09 |
| [안드로이드] 이미지뷰 흑백으로 만들기 (0) | 2021.09.24 |
| [안드로이드] EditText 다른 부분 누르면 키보드 내리기 (0) | 2021.09.23 |
| [안드로이드] 폴더 생성 시 숨김 폴더로 설정하는 법 (0) | 2021.09.22 |