Q:

I want to concat two strings for a TextView in android, Data Binding Api

Im using DataBinding Api for setting the views in android layouts. Here is my layout.
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>

I want the TextView to display Hello UserName. How to achieve this using the data binding api.

A:

concate it with grave accent (`) 
android:text="@{`Hello ` + user.firstName}"/>

You can concat it in multiple ways, check it here concat-two-strings-in-textview-using-databinding

A:

This is already answered by @GeorgeMount in comments to one of the solution. Which to me looks like the best solution so far here.
android:text="@{@string/location(user.city,user.state)}"

in your strings.xml
<string name="location">%1$s, %2$s</string>

A:

Many ways to concat strings
1. Using string resource (Most preferable because of localization)
android:text= "@{@string/generic_name(user.name)}"
Just make string resource like this.
<string name="generic_name">Hello %s</string>

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

3. Using String's concat method
android:text="@{user.firstName.concat(@string/space).concat(user.lastName)}"

Here space is an html entity which is placed inside strings.xml. Because XML does not accept Html entities or special characters directly. (Link Html Entities)
<string name="space">\u0020</string>

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

you have to import String class in layout in this type.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <import type="String" />
    </data>
    <TextView
        android:text= "@{String.format(@string/Hello, user.name)}"
        ... >
    </TextView>
</layout>

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

In this case put a string resource in strings.xml
<string name="generic_name">%1$s, %2$s</string>

There can be many other ways, choose one you need.

