2016-10-14 9 views
10

Im DataBindingを使用して、アンドロイドレイアウトのビューを設定します。ここに私のレイアウトです。アンドロイドのTextView用に2つの文字列を連結したい場合、データバインディングApi

<?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> 

layout.xml私はTextViewにはこんにちはユーザー名を表示したいです。どのようにデータバインディングAPIを使用してこれを達成する。 墓アクセント( `)

android:text="@{`Hello ` + user.firstName}"/> 

答えて

33

concateそれは"Hello %$1s , (whatever you want to add then add here)"ようstrings.xml

であなたの文字列を宣言します。 XMLは、属性の値のための単一引用符をサポートしているため

AMD使用String.format(stringResource, upsatename);

+0

うんうん。ありがとう。私は単一の反転したカンマ( ')を使用していました。重大なアクセント( ')が私のために働いた。 –

+0

@SasankSunkavalliはあなたを助けてうれしいです:)、DataBindingを使用するときは常に文字列に重大なアクセントを使用してください。 –

3

+0

私はこれがうまくいくことは知っていますが、concatの方法を使いたいです。 –

+0

%$ 1s、%$ 2sを使ってここに複数を連結することができます... –

+9

式でフォーマットされた文字列リソースを使用することもできます: 'android:text =" @ {@ string/hello(user.firstName)} "' –

2

、あなたもこれを行うことができます。

android:text='@{"Hello "+user.firstName}' 
0

は、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> 
関連する問題