[android] android, Data Binding API의 TextView에 대해 두 개의 문자열을 연결하고 싶습니다.

임 사용하여 DataBinding안드로이드 레이아웃의 뷰를 설정하는 API를. 여기 내 레이아웃입니다.

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>

TextView에 Hello UserName 을 표시하고 싶습니다 . 데이터 바인딩 API를 사용하여이를 달성하는 방법.



답변

그것을 concate 액센트 (`)

android:text="@{`Hello ` + user.firstName}"/>

여러 방법으로 연결할 수 있습니다. 여기에서 확인하십시오. concat-two-strings-in-textview-using-databinding


답변

이것은 이미 솔루션 중 하나에 대한 주석에서 @GeorgeMount에 의해 답변되었습니다. 나에게 지금까지 최고의 솔루션처럼 보입니다.

android:text="@{@string/location(user.city,user.state)}"

strings.xml에서

<string name="location">%1$s, %2$s</string>


답변

문자열을 연결하는 다양한 방법

1. 문자열 리소스 사용 ( 현지화로 인해 가장 선호 됨 )

android:text= "@{@string/generic_name(user.name)}"

이렇게 문자열 리소스를 만드십시오.

<string name="generic_name">Hello %s</string>

2. 하드 코딩 된 연결

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

3. String의 concat 메서드 사용

android:text="@{user.firstName.concat(@string/space).concat(user.lastName)}"

다음 space은 내부에 배치 된 html 엔티티입니다 strings.xml. 때문에 XML직접 HTML을 엔티티 또는 특수 문자를 허용하지 않습니다. (HTML 엔터티 연결)

<string name="space">\u0020</string>

4. 사용 String.format()

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

이 유형의 레이아웃에서 String 클래스를 가져와야합니다.

<?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. 다른 방법

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

이 경우 문자열 리소스를 strings.xml

<string name="generic_name">%1$s, %2$s</string>

다른 많은 방법이있을 수 있습니다. 필요한 것을 선택하십시오.


답변

xml은 속성 값에 작은 따옴표를 지원하므로 다음과 같이 할 수도 있습니다.

android:text='@{"Hello "+user.firstName}'


답변

두 가지 방법이 있습니다.

첫 번째 솔루션

억음 악센트 (`)와 연결

android:text="@{`Hello ` + user.firstName}"/>

두 번째 솔루션

문자열 선언 strings.xml

같은 "Hello %1$s , (whatever you want to add then add here)".

amd 사용 String.format(stringResource, upsatename);


답변

정적 문자열 및 기타 동적의 경우 이것을 사용할 수 있습니다.

android:text="@{`Hello ` + user.firstName}"/>

동적 데이터의 경우 이것을 사용할 수 있습니다.

android:text='@{user.firstName+" "+user.lastName}'


답변

xml 레이아웃에서 연결을 수행하려면 :

<data>

/*This is used for android view*/
<import type="android.view.View" />

/*This is used for android resources*/
<import type="com.myapp.R" />

/*This is app context*/
<variable
    name="context"
    type="android.content.Context" />

/*This is used for model data*/
<variable
    name="item"
    type="com.myapp.models.Chapter" />
</data>

android:text="@{item.serialNo.concat(@string/space).concat(item.title)}"

strings.xml에서 공백에 대한 코드를 추가했습니다.

<string name="space">\u0020</string>