簡單使用DataBinding

DataBinding是2016年穀歌新出的一種技術,相對當前使用較多的其他三方注入框架,DataBinding有引入簡單,操作簡單,佔用體積小的有點。這裏只是對DataBinding注入佈局的控件demo,沒有做數據的綁定。


1.引入

    項目Modual.app中,在build.gradle添加

     android{

        ...

       dataBinding{

          enabled true

       }

     }


2.佈局中使用

<?xml version="1.0" encoding="utf-8"?>
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/text_hello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
</RelativeLayout>
</layout>

在佈局中操作如上,在佈局最外層嵌套議程<layout></layout>的標籤,AS就會自動幫你生成以你佈局名稱的Binding文件。如果佈局文件名字是activity_main,那麼生成的Binding文件就是ActivityMainBinding.

   3.Java代碼中使用

    在佈局中添加<layout>...</layout>之後,怎麼在Java中使用呢?

public class MainActivity extends AppCompatActivity {
    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         binding = (DataBindingUtil.setContentView(this,R.layout.activity_main));
        initViews();
    }

    private void initViews(){
        binding.textHello.setText("this is a DataBinding Demo");
    }
}
見代碼中,定義一個自定生成的DataBinding的對象,然後通過DataBindingUtil將DataBinding添加到Java文件中來。

然後就可以使用binding獲取在佈局文件中定義的各個控件進行操作了。使用很簡單吧。歐耶~的確是這樣

4.深化處理

  如果每一個類都這樣寫,那不得累死啊。咱們做技術的需要總結共性,寫一個基類,這對於大家來講太小case了。下邊就實現一個DataBinding的基類

public abstract class BindingActivity<B extends ViewDataBinding, P extends BasePresenter> extends FragmentActivity{
    protected B binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, createLayoutId());
    }

    protected abstract int createLayoutId();
}
好了,這個基類就包含了DataBinding的初始化操作,其他的Activity 繼承於BindingActivity就可以了。就是這麼簡單,再也不用寫那麼多煩人的控件名和findViewById()的代碼了。

5.總結

   DataBinding 有其他功能,包括數據與View的綁定。DataBinding在某些特殊情況下還是不能完全替代寫View的場景。譬如在一個Adapter(有限個Item)中需要針對以某個Item中的View做處理等。


簡單demo地址如下(希望對你有幫助):

https://github.com/wzp09tjlg/2016_T_point.git


   

發佈了20 篇原創文章 · 獲贊 8 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章