StringFormat
Android에서 String.xml을 동적으로 사용하고 싶은 상황이 있을 수 있다.
계속해서 변하는 값을 알려주기 위해서는 String Formatter 를 사용한 Format String 으로 표현될 수 있다.
서식 문자열의 앞에 "%"를 붙여 문자열에 기술해 두면 그 그위치에 변수의 값을 형식화하여 넣을 수 있다.
%1$s 는 첫 번째 파라미터에 String 값이 들어오고,
%2$d 는 두 번째 파라미터에 십진수 숫자가 들어온다는 뜻의 인자이다.
<string name="dynamic_text">Dynamic Text, %1$s! Change %2$d count.</string>
위 Resource를 코드에서 사용
var text = getString(R.string.dynamic_text, printMsg, count)
Databinding에서 사용
xml에서도 위의 String Format 을 사용하여 text 를 표현가능하다.
android:text= "@{@string/dynamic_text(viewModel.printMsg, viewModel.count)}"
위 방식을 사용시
"Dynamic Text, null! Change null count." 와 같이 data 가 아직 준비되지 않은 상태에서는 null이 출력될 수 있다.
해결책으로는 dataBinding 표현식에서 검사해주는 방법이 있다.
android:text= "@{viewModel == null ? @string/loading : @string/dynamic_text(viewModel.printMsg, viewModel.count)}"
'Android > Reference' 카테고리의 다른 글
AAC (MVVM + RoomDB + RecyclerView) 실습 (0) | 2022.02.09 |
---|---|
AAC (Android Architecture Component) (1) | 2022.02.07 |
WorkManager / 워크매니저 (0) | 2022.01.04 |
View invalidate(), requestLayout() 의 차이 (0) | 2021.12.22 |
Scroll 상, 하단바 숨기기 (CoordinatorLayout) (0) | 2021.12.16 |