-1

바인딩 텍스트 :데이터 내 XML 파일이처럼 보이는이 대문자

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <data> 
     <variable 
      name="name" 
      type="com.example.android.model.Name"/> 
    </data> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/text_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:layout_gravity="center" 
      android:hint="@string/app_name" 
      android:padding="8dp" 
      android:text="@{name.title + ' ' + name.first + ' ' + name.last}" 
      android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"/> 
    </LinearLayout> 
</layout> 

그리고 POJO 클래스입니다 :

public class Name { 

    @SerializedName("title") 
    @Expose 
    private String title; 
    @SerializedName("first") 
    @Expose 
    private String first; 
    @SerializedName("last") 
    @Expose 
    private String last; 
} 

응답은 모두 소문자로 제공, 즉,

title = mr 
first = jon 
last = skeet 

자바 파일 내에서 캡쳐화할 방법이 여러 개 있다는 것을 알고 있지만, 어떤 방법 으로든 자바을 파일에 대응 내에서 XML 파일 자체 대신 각 단어 의 첫 글자를 대문자에서 바인딩 데이터를 사용하여 각 단어초기 편지를 apitalize?

+0

. 믿거 나 말거나, 대문자로 시작하지 않는 언어와 이름이 있습니다. 이름을 자동으로 대문자 사용하는 것은 실수입니다. –

답변

1

reference 같은 BindingAdapter 설정 :

@BindingAdapter({"name_text"}) 
public static void setName(TextView textView, Name name) { 
    String string = String.valueOf((name.title).charAt(0)).toUpperCase() + name.title.substring(1) 
      + " " + String.valueOf((name.first).charAt(0)).toUpperCase() + name.first.substring(1) 
      + " " + String.valueOf((name.last).charAt(0)).toUpperCase() + name.last.substring(1); 
    textView.setText(string); 
} 

를 그리고 지정하여 TextView로 : 당신은 대신 데이터를 수정해야

<TextView 
    android:id="@+id/text_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:hint="@string/app_name" 
    android:padding="8dp" 
    app:name_text="@{name}" 
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"/> 
0

것처럼 텍스트 뷰는 다음과 같습니다

<TextView 
    android:id="@+id/text_name" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:hint="@string/app_name" 
    android:padding="8dp" 
    android:text="@{String.valueOf(name.title.charAt(0)).toUpperCase() 
     + name.title.substring(1) + ' ' 
     + String.valueOf(name.first.charAt(0)).toUpperCase() 
     + name.first.substring(1) + ' ' 
     + String.valueOf(name.last.charAt(0)).toUpperCase() 
     + name.last.substring(1)}" 
    android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"/>