使用数据绑定连接两个动态字符串
Concat two dynamic strings using Data Binding
是否可以使用数据绑定连接两个动态字符串?
我的代码如下:
<TextView
android:id="@+id/text_view_activity_profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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" />
,但这不是正确的方法:
Error:(52, 42) The expression (firstNameUserdataCha) + (lastNameUserdata) cannot cannot be inverted: Two way binding with operator + 仅支持单个动态表达式。
换成这样试试
android:text='@{userdata.firstName+" "+userdata.lastName}'
或者交替...
android:text='@{String.format("%s %s", userdata.firstName, userdata.lastName)}'
它无法编译,因为您使用的是双向数据绑定。 Android 生成的 DataBinding class 将无法将 TextView
的值重新分配给 userData
,因为使用了两个变量。您可以改用单向数据绑定:
android:text='@{userData.firstName + " " + userData.lastName}'
如果您真的想使用双向数据绑定,请为此制作一个自定义转换器。
以下是推荐方式。
当你有本地化/多语言时它也很有用
像这样使用字符串资源。
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>
您可以在
中查看许多其他方法
<TextView
..........
android:text='@{String.format("%s %s","+91", userInfo.mobile)}'
.............. />
如果你想添加多个字符串,试试这个
android:text='@{String.format("%s %s","+91", userInfo.mobile)}'
输出:+91 0000000000
是否可以使用数据绑定连接两个动态字符串?
我的代码如下:
<TextView
android:id="@+id/text_view_activity_profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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" />
,但这不是正确的方法: Error:(52, 42) The expression (firstNameUserdataCha) + (lastNameUserdata) cannot cannot be inverted: Two way binding with operator + 仅支持单个动态表达式。
换成这样试试
android:text='@{userdata.firstName+" "+userdata.lastName}'
或者交替...
android:text='@{String.format("%s %s", userdata.firstName, userdata.lastName)}'
它无法编译,因为您使用的是双向数据绑定。 Android 生成的 DataBinding class 将无法将 TextView
的值重新分配给 userData
,因为使用了两个变量。您可以改用单向数据绑定:
android:text='@{userData.firstName + " " + userData.lastName}'
如果您真的想使用双向数据绑定,请为此制作一个自定义转换器。
以下是推荐方式。
当你有本地化/多语言时它也很有用
像这样使用字符串资源。
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>
您可以在
<TextView
..........
android:text='@{String.format("%s %s","+91", userInfo.mobile)}'
.............. />
如果你想添加多个字符串,试试这个
android:text='@{String.format("%s %s","+91", userInfo.mobile)}'
输出:+91 0000000000