在开发中遇到一些问题或者新学习了一些知识,总是需要看很多文档,一般有效文档(能帮助我们解决问题的文档)也就那么几篇,假如每次需要重新回顾或者进阶,又得重新去查找,这样既浪费时间又低效率。可能我们会采用浏览器设置书签存储,但是存的多了也就不好查找。所以将一些知识点或者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);
}
});
}
(图二)
参考链接:
(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)官方文档