当前位置: 代码网 > it编程>App开发>Android > Android DataBinding 与 MVVM使用详解

Android DataBinding 与 MVVM使用详解

2025年06月19日 Android 我要评论
一、databinding 核心概念定义:databinding 是 android jetpack 的官方库,允许在布局文件中直接绑定 ui 组件到数据源,减少模板代码并实现自动更新。核心优势:消除

一、databinding 核心概念

定义:databinding 是 android jetpack 的官方库,允许在布局文件中直接绑定 ui 组件到数据源,减少模板代码并实现自动更新。

核心优势

  • 消除 findviewbyid() 调用

  • 自动 ui 更新(数据变化 → ui 刷新)

  • 支持双向绑定(ui 变化 → 数据更新)

  • 布局表达式支持逻辑运算

  • 与 mvvm 架构完美契合

二、配置与基础使用

1. 启用 databinding 

android {
    buildfeatures {
        databinding = true
    }
}

2. 基础布局绑定 (activity_main.xml)

<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>
        <variable 
            name="user" 
            type="com.example.user" />
    </data>
    <linearlayout>
        <textview
            android:text="@{user.name}"  <!-- 单向绑定 -->
            android:visibility="@{user.isadult ? view.visible : view.gone}"/>
        <edittext
            android:text="@={user.email}" />  <!-- 双向绑定 -->
    </linearlayout>
</layout>

3. 在 activity/fragment 中绑定

class mainactivity : appcompatactivity() {
    private lateinit var binding: activitymainbinding
    override fun oncreate(savedinstancestate: bundle?) {
        super.oncreate(savedinstancestate)
        // 数据绑定初始化
        binding = databindingutil.setcontentview(this, r.layout.activity_main)
        // 设置数据对象
        binding.user = user("john", "john@example.com", true)
        // 设置生命周期所有者(用于livedata)
        binding.lifecycleowner = this
    }
}

三、mvvm 模式集成 databinding

mvvm 架构图

[view] ---(观察)---> [viewmodel] <---(管理)---> [model]
   ↑                      |
   └──(databinding绑定)──┘

1. 创建 viewmodel

class userviewmodel : viewmodel() {
    // 使用 livedata 实现数据观察
    private val _user = mutablelivedata<user>()
    val user: livedata<user> = _user
    // 双向绑定的可观察字段
    val inputtext = observablefield<string>("")
    init {
        _user.value = user("alice", "alice@domain.com", true)
    }
    // 处理 ui 事件
    fun updateuser() {
        _user.value = user(inputtext.get() ?: "", "", true)
    }
}

2. 更新布局绑定

<data>
    <variable 
        name="viewmodel" 
        type="com.example.userviewmodel" />
</data>
<textview
    android:text="@{viewmodel.user.name}" />
<edittext
    android:text="@={viewmodel.inputtext}" />  <!-- 双向绑定到viewmodel -->
<button
    android:onclick="@{() -> viewmodel.updateuser()}" />  <!-- 绑定点击事件 -->

3. activity/fragment 集成

class mainactivity : appcompatactivity() {
    private val viewmodel: userviewmodel by viewmodels()
    override fun oncreate(savedinstancestate: bundle?) {
        val binding: activitymainbinding = databindingutil.setcontentview(this, r.layout.activity_main)
        // 绑定 viewmodel
        binding.viewmodel = viewmodel
        // 设置生命周期所有者
        binding.lifecycleowner = this
    }
}

到此这篇关于android databinding 与 mvvm 的文章就介绍到这了,更多相关android databinding 与 mvvm 内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com