일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 백준
- activity
- Coroutine
- Behavior
- notification
- Algorithm
- hilt
- CoordinatorLayout
- CustomView
- Navigation
- onLayout
- 알림
- ViewModel
- View
- room
- CollapsingToolbarLayout
- BOJ
- kotlin
- 알고리즘
- HTTP
- 코틀린
- 안드로이드
- sqlite
- lifecycle
- AppBarLayout
- recyclerview
- Android
- DataBinding
- LiveData
- onMeasure
- Today
- Total
목록Android (안드로이드)/Databinding (6)
개발일지
문자열 서식 Android에서 UI와 관련된 문자열 리소스는 string.xml에 저장합니다. UI와 리소스를 분리하면서 다중 언어를 쉽게 지원할 수 있고 불필요한 코드의 중복을 줄일 수 있습니다. 정적 리소스 Hello World 위와 같은 정적인 문자열 리소스는 Java에서 getString과 XML에서 @string/hello_world로 사용할 수 있습니다. Hello World getString(R.string.hello_world) android:text="@string/hello_world" 동적 리소스 OOO님 안녕하세요. 위와 같이 동적인 문자열 리소스는 Java에서 getString과 XML에서는 Databinding으로 사용할 수 있습니다. %s님 안녕하세요 getString(R.st..

양방향 데이터 바인딩 EditText에서 android:text="@{string}" 이런식으로 바인딩 하는 것을 단방향 바인딩이라고 한다. (Data를 EditText에 일방적으로 바인딩하는 개념) 양방향 데이터 바인딩은 EditText, RadioButton, DataPicker등 데이터가 변하는 View가 역으로 Data로 바인딩하는 것이다. * 기본으로 지원하는 Two-Way-Databinding LifeCycleOwner 설정하기 binding.lifecycleOwner = lifecycleOwner ViewModel 만들기 원래 양방향 데이터 바인딩은 ObservableField를 통해 타입을 정해서 가능했지만 LiveData도 지원하기 시작했다. 이번 예제에서는 LiveData를 통해 양방향..

BindingAdapter Databinding을 사용하다 보면 기본적으로 제공하는 수식으로 표현 못하는 경우가 생긴다. (Glide를 사용한 ImageView 업데이트) BindingAdapter를 정의하면 해결할 수 있다. BindingAdapter object BindingAdapter { @JvmStatic @BindingAdapter(value = ["imageUrl", "error"], requireAll = false) fun loadImage(view: ImageView, url: String?, error: Drawable?) { Glide.with(view).load(url).error(error).into(view) } } @JvmStatic : Java에서도 호환을 도와주는 코드(J..

Databinding에서 제공하는 수식으로 XML에서 간단한 수식을 처리하여 Java나 Kotlin의 코드를 줄일 수 있고, 코드의 유지보수성을 높일 수 있습니다. import Java에서 import와 비슷한 의미로 변수를 선언할 때 사용한다. bind include를 사용하여 다른 layout을 포함할 때 다른 layout에 데이터를 결합하는 방법. => merge에서는 사용할 수 없다. default 데이터를 결합하기 전에 표시할 값을 선택한다. => Databinding을 사용하면 Design을 미리 볼 수 없는데 Design을 미리 볼 때도 사용할 수 있다. 문자열 리터럴 Databinding에서 문자열을 사용할 때 android:text='@{map["firstName"]}' android:t..

바인딩 객체 Databinding을 사용해서 Data를 결합하기 위해서는 DataBindingUtil이나 바인딩 클래스를 사용해서 바인딩 객체를 얻어야한다. Activity DataBindingUtil.setContentView를 사용해서 얻는다. abstract class BaseActivity(private val layoutId: Int) : AppCompatActivity() { protected lateinit var binding: VB override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) init() } protected open fun init() { initViewDataBinding(..

Databinding Java나 Kotlin으로 View를 업데이트하는 방식이 아닌 XML에서 View를 업데이트 하는 방식이다. View를 업데이트하는 코드를 분리하면서 코드의 간결함과 유지보수성이 좋고 앱의 성능이 향상된다. build.gradle(module) plugins { ... id 'kotlin-kapt' } android { ... buildFeatures { dataBinding = true } } holder_movie 기본적으로 layout안에 data와 view를 넣는다. data안에는 XML에서 사용할 변수를 선언할 수 있다. variable로 변수를 선언하여 name으로 이름을 정하고 type으로 변수의 타입을 정한다. 선언한 변수를 사용하려면 @{}로 변수를 사용한다. 데이터..