Ignacio Perez Ignacio Perez - 3 months ago 10
Android Question

How do I use databinding to combine a string from resources with a dynamic variable in XML?

I have a TextView which has a hardcoded string and I have a dynamic variable that I want to put at the end of this string. This is my code:

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp">
<TextView
android:id="@+id/PeopleName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/Generic_Text"+"@{ Profile.name }" />


</LinearLayout>


I am having an issue with
android:text="@string/Generic_Text"+"@{ Profile.name }"
. The
Generic_Text
states " My Name is " then the
Profile.name
is dynamic and obviously changes from profile to profile. I want it so that the whole TextView output is My Name is {Profile.name}. Any help would be great.

Answer

You can do this:

android:text= "@{String.format(@string/Generic_Text, Profile.name)}"

if you use string formatting for your Generic_Text string. ex. %s at the end