天天看点

【Android快捷开发笔记系列】——Data Binding

       在开发中遇到一些问题或者新学习了一些知识,总是需要看很多文档,一般有效文档(能帮助我们解决问题的文档)也就那么几篇,假如每次需要重新回顾或者进阶,又得重新去查找,这样既浪费时间又低效率。可能我们会采用浏览器设置书签存储,但是存的多了也就不好查找。所以将一些知识点或者Android体系相关的资料进行整合,形成体系化。便于自己巩固查找,提高学习效率。该文档后续会持续更新.....

1. Data Binding  

       顾名思义,数据绑定,是Google对MVVM在Android上的一种实现,可以直接绑定数据到xml中,并实现自动刷新。现在最新的版本还支持双向绑定,尽管使用场景不是那么多。

      Data Binding可以提升开发效率(节省很多以往需要手写的java代码),性能高(甚至超越手写代码),功能强(强大的表达式支持)。

用途:

  • 去掉Activities & Fragments内的大部分UI代码(setOnClickListener, setText, findViewById, etc.)
  • XML变成UI的唯一真实来源
  • 减少定义view id的主要用途(数据绑定直接发生在xml)

使用:

       要开始使用Data Binding,首先需要在Android SDK Manager的支持库里下载该库。请确保您使用的是Android Studio的兼容版本。Android Studio的Data Binding插件需要Android Studio 1.3.0 或 更高版本。目前我使用的是Android Studio3.0,所以使用的时候直接在APP ->build.grodle中添加如下代码即可使用。

a)工作环境

     你的app要使用Data Binding,需要添加Data Binding到gradle构建文件里,如下:

        android {

            ....

            dataBinding {

                enabled = true    

            }    

        }

        Data Binding插件将会在你的项目内添加必需提供的以及编译配置依赖。

b) 除了添加如上代码外,在自己的布局中需要以<layout> </layout>为跟布局。

<?xml version="1.0" encoding="utf-8"?>
<layout
    xmlns:android="http://schemas.android.com/apk/res/android"
>
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical"
  >
    
  </LinearLayout>
</layout>           

疑惑:

       在实际使用的过程发现了一些使用上的小问题,现记录如下,假如有知道更优解的同仁请留言赐教,以求共同进步。

      发现图一代码中的ActivityMainBinding类,是通过DataBindingUtil.setContentView(this,R.layout.activity_main); build代码以后才会生成的,还有ItemGridviewMainBinding等都是如此,那么每次写的时候假如自己不知道该使用哪个api的话,都要build项目,然后去图二所在的目录下(app->build->generated->source->apt->debug/release->包名下)去查找。这样对于不熟悉的人来说,会影响开发效率。

(图一)

public class MainActivity extends AppCompatActivity {
  private ActivityMainBinding mBinding;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initView();
  }
  private void initView() {
    mBinding= DataBindingUtil.setContentView(this, R.layout.activity_main);
    AdapterMainGridview adapterMainGridview = new AdapterMainGridview(this.getApplicationContext());
    mBinding.gridviewMain.setAdapter(adapterMainGridview);
    mBinding.gridviewMain.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
        clickItemShow(position);
      }
    });
  }           

(图二)

【Android快捷开发笔记系列】——Data Binding

参考链接:

(0)从零开始的Android新项目7 - Data Binding入门篇

(1)从零开始的Android新项目8 - Data Binding高级篇

(2)棉花糖给Android带来的Data Bindings(数据绑定库)  

(3) Data Binding 从入门到精通

(4)Data Binding(数据绑定)用户指南

(5)Q Q音乐 Android 团队分享 Android Data Binding 数据绑定

(6)Android,Data Binding的官方双向绑定

(7) Android Data Binding 双向绑定

(8)官方文档