美文网首页
kotlin+mvvm项目练习(二)——Databinding

kotlin+mvvm项目练习(二)——Databinding

作者: 一张不够花_ | 来源:发表于2021-10-14 17:26 被阅读0次

    没写过kotlin项目,万事开头难。不知道如何下手,看了别人的项目,太大了,还是先熟悉一下基本的知识吧。今天看看jetpack的Databinding。
    1.什么是jetpack

    先看看google关于jetpack的解释:
    jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作. 嗯,大概看了个寂寞,还是不清楚到底是做什么的,继续深入了解吧,百度会教会你所不知道的。

    image.png
    从这张图我们可以知道jetpack ,主要分成4部分,今天主要学习下DataBinding.

    1.什么是DataBinding

    见名知其意,字面意思就是数据绑定,API解释就是:数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。
    特点:

    • 替代findviewByid,以后都不用写了,
    • 解耦合,降低布局和逻辑的耦合性,使项目维护起来更简单、方便。还可以提高应用性能,
    • 有助于防止内存泄漏以及避免发生 Null 指针异常。

    3,怎么使用DataBinding
    数据绑定库与 Android Gradle 插件捆绑在一起。您无需声明对此库的依赖项,但必须启用它。

    如需启用数据绑定,请在模块的 build.gradle 文件中将 dataBinding 构建选项设置为 true
    在app>buid.gradle文件下增加以下代码

    android {
        ...
        buildFeatures {
            dataBinding true
        }
    }
    

    新建了一个LoginActivity,修改actvity_login.xml代码,增加<layout></layout>模块

    <layout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto">
    
        <data>
    
            <import type="android.view.View" />
    
    
            <variable
                name="user"
                type="com.tz.test.ui.User" />
    
    
        </data>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/white"
            android:gravity="center_horizontal"
            android:orientation="vertical"
            android:paddingLeft="15dp"
            android:paddingTop="84dp"
            android:paddingRight="15dp">
    
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/icon_logo" />
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="60dp"
                android:paddingTop="14dp">
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:hint="请输入手机号码"
                    android:text='@{user.phone}' />
    
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:background="@color/c_FFEEEEEE" />
            </RelativeLayout>
    
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="10dp"
                android:paddingTop="14dp">
    
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:hint="请输入验证码"
                    android:text='@{user.inputCode}' />
    
                <View
                    android:layout_width="match_parent"
                    android:layout_height="1dp"
                    android:layout_alignParentBottom="true"
                    android:background="@color/c_FFEEEEEE" />
            </RelativeLayout>
    
            <androidx.appcompat.widget.AppCompatButton
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_marginTop="45dp"
                android:background="@drawable/shape_login_btn"
                android:text="登录"
                android:textColor="@color/white" />
        </LinearLayout>
    </layout>
    

    新建了一个javaBean,用于展示用户手机号和输入的验证码

    class User(val phone: String, val inputCode: String) {
    }
    

    系统会为每个布局文件生成一个绑定类。默认情况下,类名称基于布局文件的名称,重新选择Make Project,系统会自动生成,ActivityLoginBinding。
    4, DataBindingUtil.setContentView替代setContentView

     val bind=DataBindingUtil.setContentView<ActivityLoginBinding>(this, R.layout.activity_login)
            bind.user= User(phone = "1234555",inputCode = "888888")
    

    相关文章

      网友评论

          本文标题:kotlin+mvvm项目练习(二)——Databinding

          本文链接:https://www.haomeiwen.com/subject/yhsuoltx.html