android 拼接字符串,我想在Android中为DataView合并两个字符串,数据绑定Api

我想在Android中为DataView合并两个字符串,数据绑定Api

我使用DataBinding Api在android布局中设置视图。 这是我的布局。

layout.xml

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_height="wrap_content"

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

我希望TextView显示Hello UserName。 如何使用数据绑定API实现此目标。

8个解决方案

140 votes

带有重音符号的concat int(`)

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

您可以通过多种方式进行连接,在此处进行检查concat-two-strings-in-textview-using-databinding

Ravi Rupareliya answered 2020-01-17T23:43:49Z

43 votes

@GeorgeMount已在解决方案之一的注释中对此进行了回答。 在我看来,到目前为止,这是最好的解决方案。 请给他+1

android:text="@{@string/location(user.city,user.state)}"

在您的strings.xml中

%1$s, %2$s

Prakash answered 2020-01-17T23:44:13Z

24 votes

连接字符串的多种方法

1.使用字符串资源(由于本地化而最可取)

strings.xml

只是像这样使字符串资源。

Hello %s

2.硬编码的连接器

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

3.使用strings.xml的concat方法

android:text="@{user.firstName.concat(@string/space).concat(user.lastName)}"

这里的strings.xml是位于strings.xml内部的html实体。因为XML不直接接受HTML实体或特殊字符。 (链接HTML实体)

\u0020

4.使用strings.xml

android:text= "@{String.format(@string/Hello, user.name)}"

您必须以这种类型在布局中导入String类。

android:text= "@{String.format(@string/Hello, user.name)}"

... >

5.另一种方法

android:text="@{@string/generic_name(user.firstName,user.lastName)}"

在这种情况下,将字符串资源放入strings.xml

%1$s, %2$s

可以有许多其他方法,选择您需要的一种。

Khemraj answered 2020-01-17T23:45:22Z

7 votes

由于xml支持属性值的单引号,因此您也可以这样做:

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

ArJ answered 2020-01-17T23:45:42Z

5 votes

有两种方法。

第一个解决方案

带有重音的连音(`)

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

第二解决方案

在String.format(stringResource, upsatename);中声明您的字符串

就像String.format(stringResource, upsatename);。

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

Yogesh Rathi answered 2020-01-17T23:46:27Z

3 votes

要在xml布局中进行合并,请执行以下操作:

/*This is used for android view*/

/*This is used for android resources*/

/*This is app context*/

name="context"

type="android.content.Context" />

/*This is used for model data*/

name="item"

type="com.myapp.models.Chapter" />

android:text="@{item.serialNo.concat(@string/space).concat(item.title)}"

在strings.xml中,我添加了空白代码:

\u0020

Ready Android answered 2020-01-17T23:46:51Z

2 votes

如果要使用模型中的数据合并String资源,可以采用以下方式:

android:text='@{@string/release_date+model.release_date}'

Jackky777 answered 2020-01-17T23:47:11Z

0 votes

我发现最简单的方法是用”(单)代替“”(双),例如 您有两个变量,

现在串联

android:text='@{a + " " + b}

Aziz answered 2020-01-17T23:47:36Z

你可能感兴趣的:(android,拼接字符串)