Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android dataBinding詳解

android dataBinding詳解

編輯:關於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>() {
            @Override
            public void onData(List list) {
                MovieAdapter mAdapter = new MovieAdapter(MovieActivity.this, list);
                binding.recyclerView.setAdapter(mAdapter);
                binding.progressBar.setVisibility(View.GONE);
            }
        });
    }
這裡用到的Adapter是RecyclerView.Adapter。不過雖然這種寫法比較新穎,但是對於初學者還是不太容易接受。原理介紹請鏈接:dataBinding原理大揭秘

 

源碼:點擊打開鏈接

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved