2016-10-14 54 views
10

Im przy użyciu DataBinding Api do ustawiania widoków w układach Android. Oto mój układ.Chcę połączyć dwa ciągi dla TextView w Androidzie, Data Binding 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> 

chcę TextView wyświetlać Witaj nazwa_użytkownika. Jak osiągnąć to za pomocą api powiązania danych.

Odpowiedz

33

concate go akcentem (`)

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

Tak, zadziałało. Dzięki . Używałem pojedynczego cudzysłowu ('). Grave akcent (') pracował dla mnie. –

+0

@SasankSunkavalli cieszę się, że ci pomogę :), zawsze używaj grawitacyjnego akcentu dla ciągu znaków podczas korzystania z DataBinding. –

3

zadeklarować swój ciąg w strings.xml

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

amd użycie String.format(stringResource, upsatename);

+0

Wiem, że to zadziała, ale chcę użyć metody konkatencji –

+0

możesz tu użyć wielokrotności używając% 1 $,% 2s ... –

+9

Możesz również użyć sformatowanych zasobów ciągów w wyrażeniu: 'android: text =" @ {@ string/hello (user.firstName)} "' –

2

Ponieważ xml obsługuje apostrofów dla wartości atrybutu, można też to zrobić:

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

Aby wykonać concat w układzie 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)}" 

W strings.xml Dodałem kod dla spacji:

<string name="space">\u0020</string>