Concat使用数据绑定的两个动态字符串

Igo*_*ńka 8 data-binding android android-databinding

是否可以使用数据绑定连接两个动态字符串?

我的代码看起来像:

<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" />
Run Code Online (Sandbox Code Playgroud)

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

Car*_*ole 17

试试这样吧

android:text='@{userdata.firstName+" "+userdata.lastName}' 
Run Code Online (Sandbox Code Playgroud)

或者......

android:text='@{String.format("%s %s", userdata.firstName, userdata.lastName)}'
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的.使用字符串连接不可能使用双向数据绑定(`@ = {...}`而不是`@ {...}`).第三个(也是更好的)选项是使用资源格式来支持多种语言:`android:text ="@ {@ string/name(userdata.firstName,userdata.lastName)}"` (7认同)

Khe*_*raj 6

下面是推荐的方式。

当您具有本地化/多语言功能时,它也很有用

使用这样的字符串资源。

android:text="@{@string/generic_name(user.firstName,user.lastName)}"
Run Code Online (Sandbox Code Playgroud)

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

<string name="generic_name">first name : %1$s and last name : %2$s</string>
Run Code Online (Sandbox Code Playgroud)

您可以在此答案中检查许多其他方式