임 사용하여 DataBinding
안드로이드 레이아웃의 뷰를 설정하는 API를. 여기 내 레이아웃입니다.
layout.xml
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable name="user" type="testing.sampleapp.com.sampleapp.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="@{ "Hello " + user.firstName}"/>
</LinearLayout>
TextView에 Hello UserName 을 표시하고 싶습니다 . 데이터 바인딩 API를 사용하여이를 달성하는 방법.
답변
그것을 concate 액센트 (`)
android:text="@{`Hello ` + user.firstName}"/>
여러 방법으로 연결할 수 있습니다. 여기에서 확인하십시오. concat-two-strings-in-textview-using-databinding
답변
이것은 이미 솔루션 중 하나에 대한 주석에서 @GeorgeMount에 의해 답변되었습니다. 나에게 지금까지 최고의 솔루션처럼 보입니다.
android:text="@{@string/location(user.city,user.state)}"
strings.xml에서
<string name="location">%1$s, %2$s</string>
답변
문자열을 연결하는 다양한 방법
1. 문자열 리소스 사용 ( 현지화로 인해 가장 선호 됨 )
android:text= "@{@string/generic_name(user.name)}"
이렇게 문자열 리소스를 만드십시오.
<string name="generic_name">Hello %s</string>
2. 하드 코딩 된 연결
android:text="@{`Hello ` + user.name}"/>
3. String
의 concat 메서드 사용
android:text="@{user.firstName.concat(@string/space).concat(user.lastName)}"
다음 space
은 내부에 배치 된 html 엔티티입니다 strings.xml
. 때문에 XML
직접 HTML을 엔티티 또는 특수 문자를 허용하지 않습니다. (HTML 엔터티 연결)
<string name="space">\u0020</string>
4. 사용 String.format()
android:text= "@{String.format(@string/Hello, user.name)}"
이 유형의 레이아웃에서 String 클래스를 가져와야합니다.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<import type="String" />
</data>
<TextView
android:text= "@{String.format(@string/Hello, user.name)}"
... >
</TextView>
</layout>
5. 다른 방법
android:text="@{@string/generic_name(user.firstName,user.lastName)}"
이 경우 문자열 리소스를 strings.xml
<string name="generic_name">%1$s, %2$s</string>
다른 많은 방법이있을 수 있습니다. 필요한 것을 선택하십시오.
답변
xml은 속성 값에 작은 따옴표를 지원하므로 다음과 같이 할 수도 있습니다.
android:text='@{"Hello "+user.firstName}'
답변
두 가지 방법이 있습니다.
첫 번째 솔루션
억음 악센트 (`)와 연결
android:text="@{`Hello ` + user.firstName}"/>
두 번째 솔루션
문자열 선언 strings.xml
같은 "Hello %1$s , (whatever you want to add then add here)"
.
amd 사용 String.format(stringResource, upsatename);
답변
정적 문자열 및 기타 동적의 경우 이것을 사용할 수 있습니다.
android:text="@{`Hello ` + user.firstName}"/>
동적 데이터의 경우 이것을 사용할 수 있습니다.
android:text='@{user.firstName+" "+user.lastName}'
답변
xml 레이아웃에서 연결을 수행하려면 :
<data>
/*This is used for android view*/
<import type="android.view.View" />
/*This is used for android resources*/
<import type="com.myapp.R" />
/*This is app context*/
<variable
name="context"
type="android.content.Context" />
/*This is used for model data*/
<variable
name="item"
type="com.myapp.models.Chapter" />
</data>
android:text="@{item.serialNo.concat(@string/space).concat(item.title)}"
strings.xml에서 공백에 대한 코드를 추가했습니다.
<string name="space">\u0020</string>