I want to concat two strings for a TextView in android, Data Binding Api
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
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>
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.