データバインディングを使用して2つの動的文字列を連結することは可能ですか?
私のコードは次のようになります:
<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" />
、ただし正しい方法ではありません:エラー:(52、42)式(firstNameUserdataCha)+(lastNameUserdata)を反転できません:演算子+を使用した双方向バインディングは単一の動的式のみをサポートします。
代わりにこのようにしてみてください
Android:text='@{userdata.firstName+" "+userdata.lastName}'
または代わりに...
Android:text='@{String.format("%s %s", 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>
この回答。で他の多くの方法を確認できます
双方向のデータバインディングを使用しているため、コンパイルされません。 Android DataBindingで生成されたクラスは、2つの変数が使用されているため、TextView
の値をuserData
に割り当てることができません。1つを使用できます-代わりにデータバインディングの方法:
Android:text='@{userData.firstName + " " + userData.lastName}'
本当に双方向のデータバインディングを使用したい場合は、そのためのカスタムコンバーターを作成してください。