首頁技術(shù)文章正文

Android培訓(xùn)之初探安卓MVVM框架設(shè)計(下)

更新時間:2017-04-14 來源:黑馬程序員Android培訓(xùn)學(xué)院 瀏覽量:

[XML] 純文本查看 復(fù)制代碼
1
<variable name="user" type="cn.itcast.mvvmdemo.User"/>
這句話代表,聲明了一個user變量,類型是cn.itcast.mvvmdemo.User,當(dāng)然這個User要提前定義.
[Java] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
public class User {
private String firstname;
private String lastname;
public User(String firstname, Stringlastname) {
this.firstname = firstname;
this.lastname = lastname;
}
public String getFirstname() {
return firstname;
}
public void setFirstname(Stringfirstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(Stringlastname) {
this.lastname = lastname;
}
}
[XML] 純文本查看 復(fù)制代碼
1
2
3
<TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="@{user.firstname}"/>

控件布局寫法和以前一樣,唯一不同之處在于控件內(nèi)容的賦值部分.以前我們都會寫一個默認(rèn)值,然后再在代碼中動態(tài)修改控件的值.此時已經(jīng)不需要了. @{user.firstname}代表當(dāng)前TextView的值取自于user對象中的firstname字段.

2. Activity代碼
[Java] 純文本查看 復(fù)制代碼
01
02
03
04
05
06
07
08
09
10
public class MainActivity extends AppCompatActivity {
private User user;
@Override
protected void onCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
ActivityMainBinding binding =DataBindingUtil.setContentView(this, R.layout.activity_main);
user = new User("尼古拉斯凱奇", "趙四");
binding.setUser(user);
}
}


ActivityMainBinding是DataBinding自動根據(jù)布局文件生成的類,不需要手動創(chuàng)建.該類的命名方式取自于布局文件的名稱.比如布局文件名叫activity_main,那么生成的類名就叫ActivityMainBinding.
當(dāng)使用DataBinding時,需要用DataBindingUtil來設(shè)置Activity的布局.
binding.setUser(user);表示將user對象和布局文件綁定在了一起,
user對象的所有屬性值都可以同步映射到布局文件的控件中.

你會發(fā)現(xiàn),我們沒有像往常那樣在activity中findViewById,找到控件后給動態(tài)賦值,而是通過DataBinding的方式直接將對象的值作用在了布局文件中,從而使我們的代碼更加優(yōu)雅和簡潔.
本文版權(quán)歸黑馬程序員Android培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請注明作者出處。謝謝!
作者:黑馬程序員Android培訓(xùn)學(xué)院
首發(fā):http://android.itheima.com/
分享到:
在線咨詢 我要報名
和我們在線交談!