요즈음 DataBinding을 이용하면서 참 편리하게 코딩을 하고 있습니다. (기능 조사가 시간이 좀 걸렸지만^^a)
xml 에 Data를 바인딩 하는 중 text에 String format은 어떻게 적용하지??
궁금증이 생겼었습니다. 답은 구글에서 이미 넣어놓았더군요.
String Literals
When using single quotes around the attribute value, it is easy to use double quotes in the expression:
android:text='@{map["firstName"]}'
It is also possible to use double quotes to surround the attribute value. When doing so, String literals should either use the " or back quote (`).
android:text="@{map[`firstName`}"
android:text="@{map["firstName"]}"
Resources
It is possible to access resources as part of expressions using the normal syntax:
android:padding="@{large? @dimen/largePadding : @dimen/smallPadding}"
Format strings and plurals may be evaluated by providing parameters:
android:text="@{@string/nameFormat(firstName, lastName)}"
android:text="@{@plurals/banana(bananaCount)}"
When a plural takes multiple parameters, all parameters should be passed:
Have an orange
Have %d oranges
android:text="@{@plurals/orange(orangeCount, orangeCount)}"
https://developer.android.com/topic/libraries/data-binding/index.html
위와 같이 String 값을 제어 할 수 있는데요.
android:text="@{@string/nameFormat(firstName, lastName)}"
String format은 위 설명이 끝입니다.
nameFormat 이라는 String format 값을 strings.xml에 정의해 주세요.
<string formatted="false" name="nameFormat">이름은 %s 이고, 성은 %s 입니다.</string>
그런 다음 firstName과 lastName 값을 넣어 주면 끝입니다.
firstName과 lastName은 데이터로 불러온 값을 넣으면 됩니다.
아래를 참고 하세요.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="handlers" type="com.example.Handlers"/>
<variable name="user" type="com.example.User"/>
</data>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.firstName}"
android:onClick="@{handlers::onClickFriend}"/>
</LinearLayout>
</layout>
## 중요한 부분은 데이터를 xml에서 계산 하거나 바꿀려고 하지 마세요.
xml에서는 인식을 못하게 됩니다. (xml형식이 있으니깐요. 거의 반나절 삽질 했네요..ㅠㅠ)
참고하세요.
'나의 플랫폼 > 안드로이드' 카테고리의 다른 글
[Android][DataBinding] application namespace for attribute will be ignored (0) | 2016.08.09 |
---|---|
[Android][DataBinding] ImageView src에 연동 하기 (함수 연결) (0) | 2016.07.08 |
[Android] DataBinding - findViewById 이제 안녕~ (6) | 2016.06.30 |
[Android] 내장 스피커로 연결 하기 (9) | 2016.06.27 |
[Android][Glide] Viewpager 에 이미지가 갱신 되지 않는 현상 (1) | 2016.06.22 |