美文网首页前端开发技术
Android MVVM框架模式介绍

Android MVVM框架模式介绍

作者: Aron1001 | 来源:发表于2017-07-06 18:48 被阅读36次

为什么使用MVVM?

  • 实现视图和逻辑代码的解耦

  • 大大的简化了代码

  • 修改XML中的控件时java代码不需要修改

  • 迭代更新UI时,一般只需要更新XML

  • 可复用性,一个viewmodel复用到多个view中,即同一份数据用不同的view来展示

  • 提高布局文件的解析速度

    findViewById--->注解框架====>注解框架虽然简便一些,但效率总是低于findViewById

    so----------------------->DataBinding

MVVM核心

​ DataBinding

使用

  • 配置gradle
    android {
    dataBinding {
    enabled true
    }
    }

  • XML中<layout>作为根节点,通过<data>节点引入我们要使用的数据源

       <data>
          <variable
              name="user"
              type="com.example.aron.UserEntity" >
          </variable>
       </data>
    

另一种写法:

<data>
    <import type="com.example.aron.UserEntity"/>
    <variable
        name="user"
        type="UserEntity" >
    </variable>
</data>

设置别名:

<import type="com.example.aron.UserEntity" alias="custom"/>
  • 绑定流程

       ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
    
      <TextView
          android:text="@{user.userName}"/>
    
    
      binding.setUser(UserEntity)
    

    注意:ActivityMainBinding是根据xml自动生成的,名字即为xml去掉下划线的名字,它会在xml布局最外层添加<layout></layout>后自动生成,如果没有生成Rebuild Project。

  • 用法

    • 支持基本的三目运算,例:(android:text="@{user.username??user.nickname}")
    • 字符拼接,例:(android:text="@{username is :+user.username}")
    • 类型转换,例:(android:text="@{String.valueOf(user.age)}")

相关文章

网友评论

    本文标题:Android MVVM框架模式介绍

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