初体验——DataBinding (一)
来源:互联网 发布:丽得姿和美迪惠尔 知乎 编辑:程序博客网 时间:2024/06/05 10:56
我达到目标的惟一的力量就是我的坚持精神。只要持之以恒,知识丰富了,终能发现其奥秘。
谨以此名言激励自己,坚持写博客,不积跬步,无以至千里!
DataBinding概念:
DataBinding 只是android提供的一个支持库,支持API7以上的所有版本,目的是简化布局,减少绑定应用程序逻辑,避免一遍又一遍的findViewById( )。
DataBinding是一个support library,所以它可以支持所有的android sdk,最低可以到android2.1(API7)。使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上(本人使用 Android studio版本3.0。)
dependencies { classpath 'com.android.tools.build:gradle:3.0.0-rc2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files}使用DataBinding之前准备工作是配置。
在模块的build.gradle文件中配置一句话即可,表示dataBinding可用。
dataBinding { enabled = true}
简易小demo上场——使用dataBinding目的就是为了简化,先从布局开始,通常写一个线性布局即可,但是dataBinding有种特殊写法,布局的外层多了一层<layout></layout>,而<layout></layout>中,定义了一层<data></data>,就是这层逻辑,是dataBinding的关键,定义一个变量<variable />,其中包含2个属性值,name和type,名称和类型,type由包名+类名组成,name以我的理解就是一个数据对象PerOne,这个对象有几个属性值,Perone.info,Perone.firstName,PerOne.lastName;当然这个对象的名称可自定义,只要符合明明规则,怎么定义看你的心情。
<layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="PerOne" type="com.example.mytry.User"/> </data> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/bdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{PerOne.info}" /> <TextView android:id="@+id/textView" android:layout_width="105dp" android:layout_height="wrap_content" android:text="@{PerOne.firstName}" /> <TextView android:id="@+id/textView2" android:layout_width="96dp" android:layout_height="wrap_content" android:text="@{PerOne.lastName}" /> </LinearLayout></layout>
布局文件定义好之后,就是使用问题了,这里setContentView()就不再需要了,我们使用同一个布局文件,只是这个布局文件是dataBinding支持的,DataBindingUtil.setContentView( ) 来加载布局文件。
package com.example.mytry;import android.app.Activity;import android.databinding.DataBindingUtil;import android.os.Bundle;import com.example.mytry.databinding.ActivityMainBinding;public class MainActivity extends Activity { private static final String TAG = MainActivity.class.getSimpleName(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main); User user = new User("张丽丽", "女", "是一名学生"); binding.setPerOne(user); }}
默认情况下,将根据布局文件的名称生成一个Binding类,将其转换为Pascal格式并将“Binding”后缀添加到该文件中。上面的布局文件是activity_main.xml
这样的生成类是ActivityMainBinding。bingding.setPerOne(user);
可能有人疑问,setPerOne()方法来自与那里,参考上一代码片,name="PerOne",即set"name",呵呵,是不是很容易。
<data> <variable name="PerOne" type="com.example.mytry.User"/></data>
通常情况下。view不只是显示到界面,是能够和用户交互并且可以响应用户的点击事件。那么就涉及事件的处理。有点类似viewHolder。
DataBinding的部分知识小点
<data> <import type="android.view.View"/> <variable name="user" type="com.example.mytry.User"/> <variable name="presenter" type="com.example.mytry.Presenter"/></data>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName}"
android:onClick="@{()->presenter.onClickText(View)}" android:visibility="@{user.adult?View.VISIBLE:View.GONE}"/>根据user的adult属性设置控件的显示和隐藏。onClick设置点击事件等。
当然还有命名重复的时候,此时采用的是alias别名以示区分。
<import type="android.view.View"/><import type="com.example.real.estate.View" alias="Vista"/>
当然还有一些情况,官方api指南上竟没有讲,被我神奇地发现(可能已经包含里面了,针对我这种懒人),
<layout></layout> 可以不用任何<data></data>,就可以替换所有的findViewById(),哈哈,这个更简单了,完全跑得通!!!
- 初体验——DataBinding (一)
- Android之DataBinding初体验(一)
- DataBinding系列(一):DataBinding初认识
- DataBinding框架初体验
- DataBinding框架初体验
- 菜鸟初体验之----DataBinding
- Android MVVM架构模式(二)——DataBinding框架(一)
- Android DataBinding介绍(一)——简介、数据及方法事件绑定
- DataBinding(一)
- 深入浅出Attribute (一)——Attribute初体验
- Auto Layout 使用心得(一)—— 初体验
- Auto Layout 使用心得(一)—— 初体验
- zTree初体验(一)——小试牛刀
- Android开发——SQLite数据库初体验(一)
- Python学习笔记(一)——Python初体验
- DataBinding的基本使用(一)
- DataBinding学习笔记(一)源码分析
- MVP+Databinding模式开发APP(一)
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- 51Nod-1829-函数
- 如何给电脑硬盘分区
- git总结之2: 必须的配置,仅需一次
- POJ 3268 Silver Cow Party
- 初体验——DataBinding (一)
- 国内外常用OJ介绍
- JavaSE 两数交换
- Activation HDU
- 前端之js-echarts(二)
- 【js】使用xml数据载体实现城市省份二级联动
- Newtonsoft.Json简要使用笔记
- 7.1 键盘获取3个整型数据
- 交流和学习2