2016-02-10 11 views
5
Ben android veri bağlama üzerinde çalışıyor ve aşağıdaki iki şekilde kullanarak bir model ayarlayabilirsiniz senaryo geldi edildi

:Android setVariable (BR.xyz, modeli) ve databinding.setXYZ (model) arasındaki fark nedir

User user = new User("User", "Abc"); // this is a model 
dataBinding.setVariable(BR.user, user); 
dataBinding.executePendingBindings(); // and we have to do this... Why? 

ve biz de böyle ayarlayabilirsiniz:

binding.setUser(user); 

kimse bu ikisi arasında bu nedir farkı açıklayabilir misiniz?

Kullanıcı Modeli:

public class User{ 
public String fName; 
public String lName; 

public User(String fName, String lName){ 
this.fName = fName; 
this.lName = lName; 
    } 
} 

cevap

6

Onlar aynı şeyi yapmak. the docs'a göre, bazen değişkenin türü belirlenemiyor, dolayısıyla setVariable() yöntemini kullanmanız gerekecek. Normal şartlar altında, setX() yöntem (ler) üretilecektir. Oluşturulan yöntemleri kullanarak daha iyi. Eğer onCreateView() Bu sınıfta

public abstract classs EditorActivityFragment<T extends ViewDataBinding> { 

: Bir soyut ortak bağlayıcı bir düzen paylaşmaz sınıfını (tabii hariç üst sınıf ViewDataBinding tüm bağlayıcı düzenleri devralan) olduğunda durumu ele alalım

3

ViewDataBinding dışında hiçbir ortak üst sınıf var olarak, bağlayıcı için Değişkeninizi ayarlamak için herhangi oluşturulan yöntemleri kullanmak mümkün olmayacaktır, böylece yansıma kullanmak zorunda kalacak ya da kolaylık yöntemini setVariable() kullanabilirsiniz:

binding.setVariable(BR.viewModel,myViewModel); 

Umarım bu yöntem için kullanım durumunu daha iyi açıklamaya yardımcı olur.

İlgili konular