本系列目錄
- 使用Data Binding(一)介紹
- 使用Data Binding(二)內建與配置
- 使用Data Binding(三)在Activity中的使用
- 使用Data Binding(四)在Fragment中的使用
- 使用Data Binding(五)資料綁定
- 使用Data Binding(六)RecyclerView Adapter中的使用
- 使用Data Binding(七)使用BindingAdapter簡化圖檔加載
- 使用Data Binding(八)使用自定義Interface
- 使用Data Binding Android Studio不能正常生成相關類/方法的解決辦法
修改activity布局
如果使Activity支援Data Binding,在布局的最外層加入"<layout>"标簽即可,由于是加在最外層,是以即使重構現有工程,所做的修改也非常簡單,并不會影響現有的布局結構。
以下以MainActivity進行舉例。
修改前activty_main.xml的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:id="@+id/tv_example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
/>
</LinearLayout>
修改後activty_main.xml的布局:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
>
<TextView
android:id="@+id/tv_example"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp" />
</LinearLayout>
</layout>
這裡的<data>标簽中的元素放的是頁面所需的資料,後面的文章我們會講到,也可以直接
點選這裡檢視,這裡我們暫且放一下,重點講Activity中Data Binding的使用。
在Activity中進行綁定
上面我們修改了布局後,下面我們就可以在代碼中進行資料綁定了。此時工程中會自動生成該布局對應的java綁定檔案:ActivityMainBinding。仔細觀察就會發現,這個檔案名就是将布局的下劃線形式轉換成java規範的駝峰形式,後面加上Binding。
下面進入MainActivity.java中下面我們進行資料綁定操作。
如果寫代碼過程中發現IDE并沒有自動正确生成對應的Binding類,則參考 這篇文章:Android Studio不能正常生成相關類/方法的解決辦法 ,僅需幾步操作即可使IDE正常生成:
- 定義成員變量:
private ActivityMainBinding mBinding;
- 在onCreate()中初始化mBinding
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
mBinding.tvExample.setText("Binding Text");
}
此時就可以從mBinding中擷取到布局中的所有View了,比如上面的mBinding.tvExample。
總結
Activity中使用Data Binding很簡單,省去了模版化的代碼findViewById(),也避免了使用ButterKnife等第三方庫,省時省力。
除了擷取布局中的元素,後續的文章我們會講到如何設定布局中的資料,可以
檢視。
如有更多疑問,請參考我的其它Android相關部落格:
我的部落格位址