所以一直期待android 也可以support,如今android studio 1.13 support了這個功能!!
現在就來介紹如何使用
首先必須先將android studio升級到1.13
接下來必須在專案的 build.gradle裡加入
classpath 'com.android.databinding:dataBinder:1.0-rc0'
接下來必須在app的build.gradle裡加入
apply plugin: 'com.android.databinding'
然後就可以在app裡使用databinding的功能了
<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.designsupportlibrary.normaldatabinding.NormalUser"/> </data> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName}"/> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.lastName}"/> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></layout>
如上面的xml file data代表著要連動的model
這代表著我們有一個 user class
public class NormalUser { private String firstName; private String lastName; public String getFirstName() { return firstName; } public String getLastName() { return lastName; } public NormalUser(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } }
接著我們只需要將normalUser 與 ui 做綁定的動作即可
NormalMainBinding binding;
NormalUser user;
@Overrideprotected
void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.normal_main);
user = new NormalUser("Test", "User");
binding.setUser(user);
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), user.getLastName(), Toast.LENGTH_SHORT).show();
}
});
}
所以這邊代表的意思就是,
首先我們會create一個binding的物件,他與view做綁定,但是我們還沒有將data餵給他
接著我們init User ,然後使用setUser 將 view 與 資料綁定
這時候 上方的edittext 就會去取得 firstName的資料
而下方的edittext就會去取得 lastName的資料,
不過目前的綁定方法就只有set下去的瞬間而已,之後你再對user做任何的改變都不會有其他相對應的變化了,如果要有相對應的變化,那就必須針對User做額外的動作,
不過這個就得等到part2 的時候再說囉XD
沒有留言:
張貼留言