Databinding 的使用

在as当中怎么使用呢?
在app build.gradle ,放入android目录下,如下

   // dataBinding 加入
  dataBinding {
    enabled = true
  }

1.常见语言环境是在Activity、Fragment和Adapter(可以是在ListView、RecyclerView);
setContentView是来源于 AppCompatActivity当中,layout布局文件当中以layout开头,而不是传统的5大布局,不过,子布局依然是;

@Override
public void setContentView(@LayoutRes int layoutResID) {
       
    mBaseBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.activity_base, null, false);
    bindingView = DataBindingUtil.inflate(getLayoutInflater(), layoutResID, null, false);
}

对于布局当中的ImageView、TextView只需要通过mBaseBinding + id 来链接,这里是DrawerLayout、NavigationView说明:

   drawerLayout = mBinding.drawerLayout;
   navView = mBinding.navView;

(2).在res文件夹下是以layout开头,而不是传统的RelativeLayout、LinearLayout等开头,如下是一个layout.xml文件;如果该文件名为layout_fragment.xml那么会默认生成一个FragmentLayoutDataBinding类;

   <?xml version="1.0" encoding="utf-8"?>
   <layout xmlns:android="http://schemas.android.com/apk/res/android">

   <LinearLayout
    android:id="@+id/ll_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPageBg"
    android:orientation="vertical">

    <!--有可能直接显示(固定的布局,非必须,按需要添加)-->
    <RelativeLayout
        android:id="@+id/rl_content_part"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


    <RelativeLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <!--加载失败-->
        <LinearLayout
            android:id="@+id/ll_error_refresh"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical"
            android:visibility="gone">

            <ImageView
                android:id="@+id/img_err"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/load_err" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="15dp"
                android:text="加载失败,点击重试"
                android:textSize="15sp" />
        </LinearLayout>

        <!--加载中..-->
        <LinearLayout
            android:id="@+id/ll_progress_bar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="80dp"
            android:gravity="center_vertical">

            <ImageView
                android:id="@+id/img_progress"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/yun_anim" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="努力加载中..."
                android:textColor="@color/colorTabText"
                android:textSize="14sp" />

        </LinearLayout>
    </RelativeLayout>
</LinearLayout>
</layout>

在App->build文件下,即我们不需要关注


image.png

3.在Adapter当中是怎么使用的呢?
我们比较常用的有ListView、GridView以及RecyclerView,都需要Adapter,那么我们取巧,下面以RecyclerView为例;

推荐阅读更多精彩内容