2015-09-29 1 views
8

Ich versuche, Datenbindung zu verwenden. Es funktioniert ordnungsgemäß, wenn ich ein Objekt verwende, das ein Attribut von string hat, aber in diesem Fall verwende ich int und es funktioniert nicht. Ich habe Objekt Benutzer:

public class User extends BaseObservable{ 
     public int age; 
     ...... 


     public User() {} 

     public int getAge() { 
      return age; 
     } 

     public void setAge(int age) { 
      this.age = age; 
     } 
     ... 

    } 

hier ist mein Layout

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android"> 
    <data> 
     <variable name="user" type="com.example.bindingview.User"/> 
    </data> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@{user.age}"/> 
    </LinearLayout> 
</layout> 

Das Problem ist, dass Textview nicht Text des Alters, die int haben kann. Wenn ich von int zu Zeichenfolge Alter Attribut ändern, hat es gut funktioniert. Was soll ich tun, um dieses Problem zu vermeiden?

Antwort

34

Fügen Sie einfach String.valueOf():

  <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="@{String.valueOf(user.age)}"/> 
+0

Vielen Dank ~ – lovefish

+0

Sie mein Leben gerettet. – itmammoth