栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android DataBinding学习(一) :基础应用(Kotlin版本)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android DataBinding学习(一) :基础应用(Kotlin版本)

文章目录

Android DataBinding学习(一):基础应用

一.DataBinding介绍二.基础应用

1.gradle配置2.简单使用

0x00.XML中的DataBinding使用0x01.数据类0x02.data中声明变量及类全名

(1)直接使用variable(2)使用import 0x03.variable绑定到UI界面

include的情况 0x04.Activity编码

小补丁 三.总结

Android DataBinding学习(一):基础应用 一.DataBinding介绍

DataBinding是google官方推出的用于降低UI和业务代码耦合的技术,很好的使用DataBnding可以有效的减少Activity的臃肿,省去大量的findViewById的代码使用。

二.基础应用 1.gradle配置

gradle的配置其实并不复杂。只需要开启对于DataBinding的支持。
在android{}里面加上下面的代码支持。

	// 用来判断是否开启DataBinding功能
    buildFeatures{
        dataBinding = true
    }

google官网关于DataBinding最新版本和gradle开启DataBinding支持的描述:
Google官方Databinding

2.简单使用

对于DataBinding而言主要是两方面的编码。Activity和xml以及数据Model的编码,首先看看xml方面的编码。

0x00.XML中的DataBinding使用

在构建XML中的databinding布局,可以使用AndroidStudio快捷组合键"alt+enter"后,选择点击 “Convert to data binding layout”,来快速生成dataBinding布局。代码如下:




    

    

    

        
        
        

    

注意到这里将xml根代码的换成了 同时多出了

0x01.数据类
data class User(var age: Int, var name: String)

这里直接使用kotlin的Data类,该类类似于Java Bean类。当然你也可以直接创建常规的Class类。

0x02.data中声明变量及类全名

在data中声明变量有两种方法:

(1)直接使用variable
	
        
    

variable的意思是"变量",顾名思义,你需要绑定的数据类就是写在这里面。name类似于Java的变量名,type类似于Java的类名,但是需要注意,这里必须给出完全路径。通过这个"variable"可以解析到数据类。

(2)使用import
	
        
        
    

这里使用了import这个也是类似于Java的import,引入包名。name改成数据类的类名。

0x03.variable绑定到UI界面

通过@{}绑定到UI界面上,代码如下:




    
        
        
    

    

        
	
        

    

include的情况




    
        
        
    
    
   	
	
    	......省略代码......




    
    
        
        
    
    ......省略代码......

DataBinding不支持merge。

0x04.Activity编码

由于使用了DataBinding就可以不需要使用传统的setContentView(R.layout.activity_main),而是使用DataBindingUtil。代码如下:

class MainActivity : AppCompatActivity() {

	// 使用空安全操作符'?'
    private var activityMainBinding:ActivityMainBinding? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        activityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
        // 设置数据类给ActivityMainBinding
        activityMainBinding?.user = User(21, "Jack")
    }
}

由于我们使用了Kotlin所以其实上面的代码可以继续简化

class MainActivity : AppCompatActivity() {

    private val activityMainBinding:ActivityMainBinding by lazy {
        DataBindingUtil.setContentView(this, R.layout.activity_main)
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // 设置数据类给ActivityMainBinding,这里不需要使用空安全修饰符了
        activityMainBinding.user = User(21, "Jack")
    }
}

使用by lazy技术简化了一下,缺点是变量必须得是val属性的。
通过以上的编码,我们就可以成功的将User的数据显示到UI上面了。

小补丁

(1) ActivityMainBinding类是插件自动生成的代码,该代码继承自ViewDataBinding,命名规则是基于xml的,xml名称是"activity_main",那么生成的代码就是ActivityMain后面加上’Binding’。
(2) ActivityMainBinding类可以调用XML上面的UI,比如上面的代码可以调用XML中的两个TextView,以及rootView

三.总结

通过以上的编码可以看到使用DataBinding技术可以大大减少Activity的代码,减少Activity的臃肿。看到这里,大家可能在想如何更新UI界面上的数据呢?在下个文章我们将解决这个问题!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号