編輯:關於Android編程
官方介紹地址:http://developer.android.com/intl/zh-cn/tools/data-binding/guide.html
2015 Google IO 大會帶來的 Data Binding 庫使得 Android 開發者可以方便的實現 MVVM 架構模式。使用DataBinding可以改善應用程序的開發,使代碼更加干淨優雅。何為MVVM模式,其實就是在View和Model層之間多了一層ViewModel,避免之前MVC模式中View層直接操作Model層,從而使代碼結構更加清晰。有興趣的可以看看之前轉載的一篇關於關於開發模式的介紹:http://blog.csdn.net/xiangzhihong8/article/details/52671151
今天要介紹的是databining(數據綁定),對於用這個的好處和壞處我也不多說,有好處也有壞處:點擊打開鏈接。
默認需要將Android studio升級到1.3(估計現在大部分都滿足),這是因為databinding的build.gradle需要滿足最低1.3(Android Studio 已經內置了對 Android Data Binding 框架的支持)。使用的時候只需要在build.gradle添加下面的腳本:
dataBinding { enabled = true }
Data Binding 是一個 support 包,添加完後,你會發現我們的External Libraries中多了四個aar包:
adapters-1.1 定義了一些DataBinding的組件 baseLibrary-2.1.3 定義了一些DataBinding的annotation和回調接口 compiler-2.1.3 定義了一些用於編譯DataBinding的工具類 library-1.1 定義了一些Observable基本類型DataBinding庫改變了android傳統開發流程中Layout文件的編寫方式,通過ViewModel,將視圖和Model綁定在一起,你只需要修改Model層的值,對應的View層就會監聽到自動修改自身。(其實也就是達到了頁面和數據的分離)
講了這麼多理論的東西,那麼到底怎麼使用DataBinding呢?
首先我們需要寫一個layout,不過Data Binding layout的和傳統的layout的寫法不一樣,起始根標簽是 layout,接下來一個 data 元素以及一個 view 的根元素。這個 view 元素就是你沒有使用 Data Binding的layout文件的根元素。
一般在正式寫代碼的順序上我們會先定義一個viewmodel類,如下:
public class UserModel { private String firstName; private String lastName; public UserModel(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return this.firstName; } public String getLastName() { return this.lastName; } }
請注意這個layout的文件名,DataBinding會根據這個layout的文件名生成一個xxBinding類,這個類繼承自ViewDataBiding;如果layout文件名是content_main.xml,則會生成一個ContentMainBinding類,根據官方解釋是自動把layout文件名的下滑線去掉,然後采用駝峰式的命名規則,然後再加上Binding後綴。
com.xzh.databinding會根據xml文件的名稱 Generate 一個繼承自 ViewDataBinding 的類。例如,這裡 xml 的文件名叫 activity_main.xml,那麼生成的類就是 ActivityMainBinding。
最後需要實現通過ViewModel實現View和Model的數據綁定(常常寫在Activity層,如果項目比較大的話,建議將網絡請求單獨分層)。
private void getSearchData(String search) { binding.progressBar.setVisibility(View.VISIBLE); MovieHttpManager.searchMovies(search, new MovieHttpManager.IMovieResponse這裡用到的Adapter是RecyclerView.Adapter。不過雖然這種寫法比較新穎,但是對於初學者還是不太容易接受。原理介紹請鏈接:dataBinding原理大揭秘>() { @Override public void onData(List
list) { MovieAdapter mAdapter = new MovieAdapter(MovieActivity.this, list); binding.recyclerView.setAdapter(mAdapter); binding.progressBar.setVisibility(View.GONE); } }); }
源碼:點擊打開鏈接
1 簡介在阿裡聚安全的漏洞掃描器中和人工APP安全審計中,經常發現有開發者將密鑰硬編碼在Java代碼、文件中,這樣做會引起很大風險。信息安全的基礎在於密碼學,而常用的密碼
今天和大家分享下組合控件的使用。很多時候android自定義控件並不能滿足需求,如何做呢?很多方法,可以自己繪制一個,可以通過繼承基礎控件來重寫某些環節,當
1、adapter 和adapterview 復用歷史緩存(item布局和數據緩存)。 2、數據分頁顯示(利用操作引導用戶) 3、優化布局文件xml。(layout盡量不
MainActivity.java代碼:package siso.supervideoplayer;import android.content.pm.ActivityI