Android d-DataBind使用
7986 ワード
> Android https://developer.android.com/tools/data-binding/guide.html
http://blog.zhaiyifan.cn/2016/06/16/android-new-project-from-0-p7/ https://github.com/LyndonChin/MasteringAndroidDataBinding/blob/master/README.md#rd https://www.aswifter.com/2015/07/11/android-data-binding-example/ プロジェクトの住所MVVM
MVC-』MVP-」MVM開発モードの移行。
Androidでの利点は、MVPを使用した後にp層がデータを持ってview層の修正インターフェースを呼び出したり、データ修正p層通知ビューが修正されたりしています。いくつかの操作が多くなりました。MVMはステップの欠点と結合性が高くなり、再構成に不利です。
DataBind
Data Bindingは、名前の通り、データバインディングは、GoogleがMVVMに対してAndroid上での実現であり、直接にデータをxmlに結びつけて、自動的に更新することができます。
使用
moduleのgradleで構成をして、Androidのgradleバージョンは1.5-alpha 1を下回ってはいけません。
dataBinding {
enabled true
}
第一歩public class User {
private final String Name;
public User(String Name) {
this.Name= Name;
}
public String getName() {
return Name;
}
}
mvpやmvcでtextViewにユーザーの名前を表示させるには、コードコール、text.set Text(user.get Name()などの操作はdatabindの操作で少なくなります。二番目のステップはxmlにファイルを設定します。
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
data>
<LinearLayout>
....
LinearLayout>
layout>
LinearLayout , , layout, data
DataBindを使用した後、xmlのレイアウトは単にUIを展示するのではなく、UI要素用変数も必要です。dataはviewとmodelの関係を構築するようになりました。第三ステップは、どのオブジェクトまたは要素を使ってdataに書くかをレイアウトに教えます。
<data>
"user" type="com.hotel.sf.databinddemo.User" />
data>
, import
<data>
<import type="com.hotel.sf.databinddemo.User" />
"user" type="User" />
data>
第四歩viewとmodelを結合する
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.name}" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{user.getName()}" />
第五段階のData BindingUtil.set ContintViewはset ContteViewに取って代用されました。MainActivityで使用すれば、 ActivityMainBinding viewDataBinding = DataBindingUtil.setContentView(this,R.layout.activity_main);
user = new User("xiaoming");
viewDataBinding.setUser(user);
空のポインターtextview.settext(null)は他の空いているポインタを取得し、xmlでも関連する論理判断(三元演算子)ができます。
android:text="@{user.displayName != null ? user.displayName : user.lastName}"
android:text="@{user.displayName ?? user.lastName}"
viewに属性を設定することもできます。"@{user.name}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{user.isAdult ? View.VISIBLE : View.GONE}"/>
単方向結合上の設定は、あなたのコードがユーザーの属性を変更した時、自動的に属性上の変更を行いません。ユーザーがデータを修正する時にレイヤーを見ても自動的に修正してほしいです。
Observable Bindingを実現するには、まず一つのimplementがインターフェースandroid.databinding.Observableのクラスを持つ必要があります。便利さのために、Android原生はすでにパッケージされているクラス-BaseObservableを提供し、モニターの登録機構を実現しました。
public class User extends BaseObservable {
private String name;
public final String defalutName = " ";
public User(String name) {
this.name= name;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
notifyPropertyChanged(com.hotel.sf.databinddemo.BR.firstName);
}
@Bindable
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
,Bindable BR Entry。BR 。 Data ,Observable PropertyChangeRegistry 。
時間を節約したいなら、Observableフィールドを使ってもいいです。これを使うには、public finalを作成する必要があります。public class User extends BaseObservable {
public final ObservableField name =
new ObservableField<>();
}
user.name.set(" ");
user.name.get()