반응형
<data> 태그를 사용하면 activity 로직부분에서 구현하지않더라도, xml 쪽에서 바로 데이터바인딩이 가능하다
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<data>
<import type="android.view.View"/>
<variable
name="isDebug"
type="Boolean" />
</data>
</layout>
<data> 태그 내부에 <import> 태그를 우선 살펴보자
import 태그란 ?
특정 클래스나 패키지를 임포트 할 수 있는데,
현재 View 를 임포트했기때문에 android:visibility, onClick 과 같은 속성 사용이 가능하다
//import 안했을 경우
android:visibility="@{isDebug ? View.VISIBLE : View.GONE}"
//import 했을 경우
android:visibility="@{isDebug ? VISIBLE : GONE}"
이런 차이로 보면 된다
variable 태그란 ?
단순 변수이다. 로직에서 값을 세팅하면 xml에서 사용이 가능하다
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
_binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(_binding.root)
initView()
}
private fun initView() {
_binding.isDebug = true
}
바인딩을 사용하는 경우의 예시이며, 데이터바인딩으로 바로 사용가능하다.
만약 type 으로 model 을 넣으면 모델 째로 사용이 가능하다.
...
<data>
<import type="android.view.View"/>
<variable
name="isDebug"
type="Boolean" />
<variable
name="item"
type="com.example.network_sample.model.DogResponse" />
</data>
...
<TextView
android:text="@{item.status}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:ignore="MissingConstraints" />
github주소
- showDog 프로젝트
728x90
'Mobile > Android' 카테고리의 다른 글
Kotlin - Android 빈 화면 터치 시 키보드 숨김 (0) | 2024.04.09 |
---|---|
Kotlin - Android Navigation Component 사용과 Fragment 이동 (0) | 2024.04.09 |
Kotlin - Android Hilt 사용하여 앱 개발하기 (3) - 데이터 바인딩 (0) | 2024.03.29 |
Kotlin - Android Hilt 사용하여 앱 개발하기 (2) - Network 통신 (0) | 2024.03.28 |
Kotlin - Android Hilt 사용하여 앱 개발하기 (1) - Hilt 추가 (0) | 2024.03.28 |