Androidレイアウトでビューを設定するために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を使用してこれを実現する方法。
concat int withグレーヴアクセント( `)
Android:text="@{`Hello ` + user.firstName}"/>
複数の方法で連結できます。ここで確認してください concat-two-strings-in-textview-using-databinding
これは、ソリューションへのコメントで@GeorgeMountによって既に回答されています。私にとって、これはここまでで最高のソリューションのように見えます。彼に+1してください
Android:text="@{@string/location(user.city,user.state)}"
あなたのstrings.xmlで
<string name="location">%1$s, %2$s</string>
Android:text= "@{@string/generic_name(user.name)}"
このような文字列リソースを作成します。
<string name="generic_name">Hello %s</string>
Android:text="@{`Hello ` + user.name}"/>
String
のconcatメソッドの使用Android:text="@{user.firstName.concat(@string/space).concat(user.lastName)}"
ここで、space
はstrings.xml
内に配置されるhtmlエンティティです。 XML
はHtmlエンティティまたは特殊文字を直接受け入れないためです。 (Link HTMLエンティティ)
<string name="space">\u0020</string>
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>
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}'
2つの方法があります。
最初の解決策
graveアクセントと連結( `)
Android:text="@{`Hello ` + user.firstName}"/>
2番目のソリューション
strings.xml
で文字列を宣言します
"Hello %1$s , (whatever you want to add then add here)"
など。
AMDはString.format(stringResource, upsatename);
を使用します
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>
String
リソースをモデルのデータと連結する場合は、次の方法で実行できます。
Android:text='@{@string/release_date+model.release_date}'