Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 추상팩토리패턴
- a
- 프로토타입 패턴
- ㅋㅁ
- builderPattern
- Abstract Factory
- Kotlin
- designPattern
- 추상 팩토리
- 디자인패턴 #
- 빌터패턴
- factory method
- Observer Pattern
- 함수형프로그래밍
- 옵저버 패턴
- Functional Programming
- El
- 팩토리 메소드
- r
- 싱글톤
- 디자인패턴
- 코틀린
- Design Pattern
- ㅓ
- PrototypePattern
- Singleton
- F
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
DataBinding 표현식 정리 본문
속성 = @{ }
지원되지 않는 기능
- this
- super
- new
- 명시적 제네릭 호출
Null 병합 연산자 (?? )
- 사용법
3항 연산자를 통해 이름이 있으면 이름을 텍스트로 지정하고 없으면 string 리소스를 지정한다.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{currentUser.name != null ? currentUser.name : @string/no_name}"
/>
이걸 Null 병합 연산자를 통해 다음처럼 줄여 쓸 수 있다.
피연산자(왼쪽)?? 피연산자(오른쪽) ---> 왼쪽의 값이 날이 아니면 그대로 지정 날이면 오른쪽의 값을 지정
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{currentUser.name ?? @string/no_name}"
/>
null 포인터 예외 방지
생성된 데이터 결합 코드는 자동으로 null 값을 확인하고 null 포인터 예외를 방지합니다. 예를 들어 @{user.name} 표현식에서 user가 null이면 user.name에 null이 기본값으로 할당됩니다. age의 유형이 int인 user.age를 참조하면 데이터 결합은 0의 기본값을 사용합니다.
Collection 클래스 사용하기
- 사용법
아래와 같이 사용할 컬렉션 및 데이터를 import 태그를 이용하여 지정한다.
그리고 바인딩 변수를 생성한다. HashMap <type, type>에서 < 문자는 이스케이프 처리를 해야 한다.
<data>
<import type="java.util.HashMap"/>
<import type="com.professionalandroid.apps.databinding.User"/>
<variable
name="userMap"
type="HashMap<Integer, User>"
/>
</data>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{userMap.get(1).name}"
/>
리소스 사용하기
@{ @string/name }과 같은 형태로 사용될 수 있다.
'Android Jetpack Architecture > DataBinding' 카테고리의 다른 글
DataBinding Component 사용하기 (0) | 2020.08.07 |
---|---|
DataBinding 자동객체 전환 (0) | 2020.08.07 |
DataBinding 이벤트 처리하기 (0) | 2020.08.07 |
Binding Method BindingAdapter (0) | 2020.08.05 |
데이터 바인딩(DataBinding) (0) | 2020.08.05 |