2

Ben Bağlama veri kullanıyorum ve basit bir düzenle çok basit bir sınıfAndroid Veri Bağlama ile kullanıcı arabirimindeki bir nesne nasıl güncellenir?

public class ViewUser extends BaseObservable { 
    private String name; 

    @Bindable 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
     notifyPropertyChanged(BR.name); 
    } 
} 

oluşturduk

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

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

       <EditText 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:gravity="top" 
        android:lines="3" 
        android:text="@{user.name}" /> 
    </LinearLayout> 
</layout> 

Ben nesneyi, herhangi bir sorun olmadan UI güncellemeleri güncelleme

ama eğer ben EditText'in değerini UI'den değiştirin ve daha sonra DataBindingUtil .getUser() öğesini kullanarak kullanıcıyı edinin, güncellenmiş değere sahip değil. Mülkün otomatik olarak güncellenmesi mümkün mü yoksa TextWatcher'ın onTextChanged gibi bir etkinliği kullanarak nesneyi güncellemek zorunda mıyım?

+1

AFAIK, bunu kendiniz halletmelisiniz. Örneğin, bu durumda, veri bağlama istediğiniz şeyi yaptıysa, sonsuz bir döngü ('EditText' çağrılarını setUser() 'olarak adlandırırsınız. 'setUser()' hangi ...). Ayrıca, herkesin istediği gibi tuş vuruşu temelinde güncellemesini istemediğinden (TextWatcher ile ima ettiğiniz gibi) istediğinizi seçmeniz gerektiğini aklınızda bulundurun. – CommonsWare

+0

Bu yardımcı olabilir: http://stackoverflow.com/questions/33362533/create-two-way-binding-with-android-data-binding – FWeigl

+0

Etkinliğinizdeki güncelleştirilmiş modele nasıl erişirsiniz? Etkinliğinizi görmeyi çok isterdim. –

cevap

3

Sizin xml etiketi android:text@ sonra, bir = eksik: android:text="@={user.name}"

@={} "iki yönlü veri bağlama" anlamına gelir. @{}, tek yönlü bir veri bağlamasıdır.

0

Güncellenmiş modeli XML'inizden almak ve almak için. Eğer EditText içinde yapmak zorunda:

den:

android:text="@{user.name}" 

için:

android:text="@={user.name}" 
kodlama

Mutlu !!