databinding (5) 썸네일형 리스트형 Android 양방향 데이터 바인딩 사용하기 (Two-way DataBinding With LiveData) 이전에 DataBinding에 LiveData를 사용해 데이터가 변경될 때마다 실시간으로 UI에 반영되도록 했습니다. 이번에는 사용자가 입력한 값을 가져와서 처리할 때 유용한 양방향 데이터 바인딩(Two-way DataBinding)을 사용해보겠습니다. 기존에 사용하는 단방향 데이터 바인딩의 경우 다음과 같이 LiveData가 가진 데이터를 사용자에게 보여줄 때 유용했습니다. android:text="@{String.valueOf(myViewModel.countData)}" 하지만 사용자가 입력한 값을 사용하려면 여전히 EditText에서 Text를 가져오는 과정을 직접 작성을 해야 했습니다. EditText에 사용자가 입력한 값을 LiveData가 가지고 있어서 처리가 필요할 때마다 ViewModel에.. DataBinding에 ViewModel, LiveData와 함께 사용하기 지난 LiveData 사용하기에 이어서 DataBinding을 ViewModel, LiveData와 함께 사용해보려고 합니다. 결과물 버튼을 클릭하면 1을 더한 결과를 보여줍니다. 주요 처리 사항 ViewModel을 Databinding에 사용하기 덧셈 결과(LiveData)가 버튼 클릭으로 인해 변경될 때마다 실시간으로 TextView에 반영이 됩니다. MainActivity.kt에서 덧셈 결과(LiveData)를 관찰하는 코드를 명시 안 해도 됩니다. MainActivity.kt ViewModel을 생성한 이후 binding의 변수로 사용합니다. layout에서 ViewModel이 가지고 있는 LiveData, 함수 등을 사용할 수 있습니다. 또한 LiveData를 DataBinding에서 사용할 때.. [안드로이드/Android] Databinding 사용하기 Databinding 사용한 예시를 만들기 전에 findViewByid의 작동 방식을 알아보고 가겠습니다. 목차 findViewByid 작동 방식과 문제점 우리가 뷰에 대한 참조를 얻기 위해서 findViewByid() 함수를 사용할 때마다 안드로이드 시스템은 런타임 중에 뷰 구조를(view hierarchy) 살펴보고 원하는 뷰를 찾아내는 작업을 합니다. 규모가 큰 앱의 경우 레이아웃이 많고 수 백개의 뷰가 있을 수 있습니다. 그럼 한 화면을 보여줄 때 안드로이드 시스템은 수 백번 뷰 구조를 보는 작업이 필요합니다. -> 규모가 큰 앱의 경우 안드로이드 시스템에서 뷰를 참조하기 위한 많은 작업이 필요합니다. 적어도 오늘 날의 모바일 폰 시장에서 적어도 60Hz의 화면 재생 빈도(refresh frequ.. android 공식 문서를 영어로 봐야하는 이유 1. 최신 버전에 맞게 내용을 수정해주는 것이 늦습니다. 예시 1 databinding 데이터 결합을 사용하도록 앱을 구성하려면 앱 모듈에서 dataBinding 요소를 build.gradle 파일에 추가해야 합니다. 한글 문서는 다음과 같이 설명해줍니다. 하지만 Android Studio version 4.1 이상 버전에서 다음과 같이 따라하면 밑의 에러가 발생합니다. 한글 문서에서 알려준 방식이 obsolete(쓸모 없는, 구식의)하고 대체될 것이라는 경고 문구를 반환합니다. 영어 문서에는 대체될 방법을 알려줍니다.. 이대로 실행하면 경고 문구가 사라집니다... 영어 공부 해야겠죠?? databinding 공식 문서 :developer.android.com/topic/libraries/data-bin.. [Android / Kotlin] DataBinding을 사용해 findViewById()를 대체하기 데이터 바인딩을 사용해 findViewById()을 대체하는 과정 1. build.gradle 파일의 안드로이드 섹션에 data binding을 가능하게 한다. buildFeatures { dataBinding true } 2. XML layout 파일에 태그를 root view로 선언한다. '''''' 3. MainActivity에 바인딩 변수를 선언한다. private lateinit var binding: ActivityMainBinding 4. 바인딩 객체를 만들고, 기존의 setContentView를 대체한다. binding = DataBindingUtil.setContentView(this, R.layout.activity_main) 5. findViewById()를 바인딩 객체로 대체한다. .. 이전 1 다음