2016-10-14 63 views
10

Im使用DataBinding Api來設置android佈局中的視圖。這是我的佈局。我想連接兩個字符串爲Android中的TextView,數據綁定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用戶名。如何使用數據綁定api來實現這一點。

回答

33

重音(`)concate它

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

是的,它的工作。謝謝 。我使用單引號(')。重音口音(')爲我工作。 –

+0

@SasankSunkavalli很樂意幫助你:),使用DataBinding時總是對字符串使用重音符號。 –

3

聲明你的字符串中strings.xml

"Hello %$1s , (whatever you want to add then add here)"

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

+0

我知道這會工作,但我想用連續的方式 –

+0

你可以使用%$ 1s,%$ 2s在這裏串聯多個... –

+9

你也可以在表達式中使用格式化的字符串資源:'android:text =「 @ {@串/你好(user.firstName)}「' –

2

由於XML支持屬性值的單引號,你也可以這樣做:

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

在XML中的佈局做了CONCAT:

<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> 
相關問題