Kotlin+DataBinding:入门篇(DataBinding的安装以及运行你的第一个demo)

前言:

前几天导师叫我去学DataBinding,正好赶上这几天把以前放弃的Kotlin重新拾起(Kotlin的春天要来了?),所以就想到用Kotlin上使用DataBinding,前期踩了好多的坑(下面我会列出我踩到的坑,并提供解决办法),然后去看了点视频,学习了一些入门的使用,DataBinding相比Kotlin-android-extensions 来说,优点更多,在我理解,将它俩结合来用,就两个子绝了 , 总而言之学就完了(导师常说的话)。

1.安装DataBinding

Install DataBinding in Java:

在java环境下安装DataBinding很简单,只需要在Moudle的build.gradle的android{}里添加dataBinding.enable = true即可如下图:


install DataBinding in Kotlin:

要想在Kotlin上使用DataBinding可能会踩很多的坑,不过总体安装步骤如下:

1.安装Kotlin语言环境(不会的请左转百度)

2.配置project的build.gradle 

    buildscript{

    ext.android_plugin_version = AndroidStudio版本号    

    }

    dependencies {

    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:#kotlin_version"   

    }


 Moudle 的 build.gradle

    apply plugin: 'kotlin-kapt' (这行要写在上面)

    android{

    dataBinding.enable = true
    }

    kapt{

    enable = ture

    }

    dependencies{

    kapt "com.android.databinding:compiler:$android_plugin_version"

    }

配置完毕后如下图所示

Moudle的build.gradle


Project下的build.gradle:




2.容易踩到的坑


问题:Data Binding annotation processor version needs to match the Android Gradle Plugin version. You can remove the kapt dependency com.android.databinding:compiler:2.1.0 and Android Gradle Plugin will inject the right version.

解决办法:将Kotlin_plugin_version的版本升级,直接改参数就好,我使用的是3.1.2


还有些问题就不说了,基本按照上面的方法配置的就不会有错,可能会提示如下:但是那个可以忽略,不影响开发。如果有错误,看一看配置是不是缺了什么。



3.DataBinding初体验

首先我们需要在Layout布局中增加外层的布局<layout></layout>并且把我们的xmlns放在这个布局中,我们的布局就写好了如下图,此时一定要重构一下,不然不会生成Binding类

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Main2Activity">

    </LinearLayout>

</layout>

之后我们需要在Activity的类中声明我们的Binding类,来进行后续的操作。


这样我们就完成了layout与Activity的绑定,接下来我们开始使用它来进行一些爽爆的操作。

我们首先写两个TextView一个EditView,然后并且给他们附上id,然后我们通过binding来给这些控件传值(xml我就不放代码了)。

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        var binding :ActivityMain2Binding = DataBindingUtil.setContentView(this@Main2Activity,R.layout.activity_main2)
        binding.xd.text = "haha" //使用了dataBinding
        xd.text = "Nixo" // 使用了kotlin-android-extensions
    }

这样即便不用去绑定控件也可以直接使用控件了。而Kotlin的android-extensions插件同样具有这种功能 前者是通过绑定视图来达到的,而Kotlin插件是通过导入id来实现的。

<- 效果图



这样我们的第一个使用Kotlin+DataBinding的Demo就搞定了。





猜你喜欢

转载自blog.csdn.net/qq_40033365/article/details/80539143