在開發中遇到一些問題或者新學習了一些知識,總是需要看很多文檔,一般有效文檔(能幫助我們解決問題的文檔)也就那麼幾篇,假如每次需要重新回顧或者進階,又得重新去查找,這樣既浪費時間又低效率。可能我們會採用瀏覽器設置書籤存儲,但是存的多了也就不好查找。所以將一些知識點或者Android體系相關的資料進行整合,形成體系化。便於自己鞏固查找,提高學習效率。該文檔後續會持續更新.....
1. Data Binding
顧名思義,數據綁定,是Google對MVVM在Android上的一種實現,可以直接綁定數據到xml中,並實現自動刷新。現在最新的版本還支持雙向綁定,儘管使用場景不是那麼多。
Data Binding可以提升開發效率(節省很多以往需要手寫的java代碼),性能高(甚至超越手寫代碼),功能強(強大的表達式支持)。
用途:
- 去掉Activities & Fragments內的大部分UI代碼(setOnClickListener, setText, findViewById, etc.)
- XML變成UI的唯一真實來源
- 減少定義view id的主要用途(數據綁定直接發生在xml)
使用:
要開始使用Data Binding,首先需要在Android SDK Manager的支持庫裏下載該庫。請確保您使用的是Android Studio的兼容版本。Android Studio的Data Binding插件需要Android Studio 1.3.0 或 更高版本。目前我使用的是Android Studio3.0,所以使用的時候直接在APP ->build.grodle中添加如下代碼即可使用。a)工作環境
你的app要使用Data Binding,需要添加Data Binding到gradle構建文件裏,如下:
android {
....
dataBinding {
enabled = true
}
}
Data Binding插件將會在你的項目內添加必需提供的以及編譯配置依賴。
b) 除了添加如上代碼外,在自己的佈局中需要以<layout> </layout>爲跟佈局。
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout> </layout>
疑惑:
在實際使用的過程發現了一些使用上的小問題,現記錄如下,假如有知道更優解的同仁請留言賜教,以求共同進步。
發現圖一代碼中的ActivityMainBinding類,是通過DataBindingUtil.setContentView(this,R.layout.activity_main); build代碼以後纔會生成的,還有ItemGridviewMainBinding等都是如此,那麼每次寫的時候假如自己不知道該使用哪個api的話,都要build項目,然後去圖二所在的目錄下(app->build->generated->source->apt->debug/release->包名下)去查找。這樣對於不熟悉的人來說,會影響開發效率。
(圖一)
public class MainActivity extends AppCompatActivity { private ActivityMainBinding mBinding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); } private void initView() { mBinding= DataBindingUtil.setContentView(this, R.layout.activity_main); AdapterMainGridview adapterMainGridview = new AdapterMainGridview(this.getApplicationContext()); mBinding.gridviewMain.setAdapter(adapterMainGridview); mBinding.gridviewMain.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) { clickItemShow(position); } }); }
參考鏈接:
(0)從零開始的Android新項目7 - Data Binding入門篇
(1)從零開始的Android新項目8 - Data Binding高級篇
(2)棉花糖給Android帶來的Data Bindings(數據綁定庫)
(5)Q Q音樂 Android 團隊分享 Android Data Binding 數據綁定
(6)Android,Data Binding的官方雙向綁定
(8)官方文檔