使用数据绑定连接两个动态字符串

Posted

技术标签:

【中文标题】使用数据绑定连接两个动态字符串【英文标题】:Concat two dynamic strings using Data Binding 【发布时间】:2017-07-18 06:13:45 【问题描述】:

是否可以?

我的代码如下:

<TextView
                    android:id="@+id/text_view_activity_profile_name"
                    android:layout_
                    android:layout_
                    android:layout_below="@id/image_view_activity_profile_small_photo"
                    android:layout_centerHorizontal="true"
                    android:layout_marginTop="15dp"
                    android:text="@=userdata.firstName+' '+userdata.lastName"
                    android:textColor="@color/white"
                    android:textSize="24sp" />

,但这不是正确的方法: 错误:(52, 42) 表达式 (firstNameUserdataCha) + (lastNameUserdata) 无法反转:与 operator + 的两种方式绑定仅支持单个动态表达式。

【问题讨论】:

用 setText 在你的 java 代码中设置你的 textview。 【参考方案1】:

试试这样吧

android:text='@userdata.firstName+" "+userdata.lastName' 

或者……

android:text='@String.format("%s %s", userdata.firstName, userdata.lastName)'

【讨论】:

这是对的。不能对字符串连接使用双向数据绑定(@=... 而不是@...)。第三个(更好的)选项是使用资源格式来支持多种语言:android:text="@@string/name(userdata.firstName, userdata.lastName)"【参考方案2】:

由于您使用的是双向数据绑定,因此无法编译。 Android DataBinding 生成的类将无法将TextView 的值分配回userData,因为使用了两个变量。您可以改用单向数据绑定:

android:text='@userData.firstName + " " + userData.lastName'

如果您真的想使用双向数据绑定,请为此制作一个自定义转换器。

【讨论】:

【参考方案3】:

以下是推荐的方式。

当你有本地化/多语言时它也很有用

像这样使用字符串资源。

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

并在strings.xml中制作字符串资源

<string name="generic_name">first name : %1$s and last name : %2$s</string>

您可以在this answer.

中查看许多其他方式

【讨论】:

【参考方案4】:
                        <TextView
                        ..........
                        android:text='@String.format("%s %s","+91", userInfo.mobile)'
                        .............. />

如果你想添加多个字符串试试这个

android:text='@String.format("%s %s","+91", userInfo.mobile)'

输出:+91 0000000000

【讨论】:

以上是关于使用数据绑定连接两个动态字符串的主要内容,如果未能解决你的问题,请参考以下文章

数据绑定

C#datagridview控件绑定数据库,按照控件提示绑定后运行失败?

WPF怎样将两个控件连接起来

Oracle - 如何使用动态绑定参数定义动态 SQL?

WPF 动态列(DataGridTemplateColumn) 绑定数据 (自定义控件)

Oracle - 如何使用动态绑定参数定义动态SQL?