2016-02-10 5 views
5
私はアンドロイドのデータバインディングに取り組んでおり、我々は、次の2つの方法使用してモデルを設定することができ、シナリオに出くわした

アンドロイドはSetVariable(BR.xyz、モデル)とdatabinding.setXYZ(モデル)の違いは何ですか

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

、我々も同じように設定することができます

binding.setUser(user); 

誰もがこれらの二つの間のこの何の違いを説明できますか?

ユーザーモデル:

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

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

答えて

6

彼らは同じことを行います。 the docsによれば、変数の型を判別できないことがあるので、setVariable()メソッドを使用する必要があります。通常の状況では、setX()メソッドが生成されます。生成されたメソッドを使用する方がよいでしょう。

3

あなたが(すべての結合レイアウトが継承するスーパークラスViewDataBindingもちろん除く)共通の結合レイアウトを共有しない抽象クラスを持っている場合を考えてみましょう。このクラスで

public abstract classs EditorActivityFragment<T extends ViewDataBinding> { 

onCreateView()あなたをViewDataBinding以外に共通のスーパークラスがないよう、結合へのあなたの変数を設定するために、任意の生成されたメソッドを使用することはできません、ので、あなたは、リフレクションを使用するように強制されます、またはあなたは便利なメソッドsetVariable()使用することができます。

binding.setVariable(BR.viewModel,myViewModel); 

このメソッドのユースケースをよりよく説明できるようにしたいと考えています。

関連する問題