当前位置: 首页 > news >正文

Data binding和View binding

Data Binding 和 View Binding 是 Android 开发中两种用于简化界面(UI)与数据之间交互的技术。它们各自有其独特的用途和优势。

Data Binding

Data Binding 允许你在布局文件中直接使用变量,并自动将它们与你的数据对象同步。这减少了大量的样板代码(如 findViewById 和手动更新 UI 的代码)。

步骤 1: 在 build.gradle 文件中启用 Data Binding

android {...dataBinding {enabled = true}
}

步骤 2: 创建一个简单的布局文件 activity_main.xml

<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="user"type="com.example.User" /></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{user.name}" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{user.email}" /></LinearLayout>
</layout>

注释:

  • <layout> 标签是 Data Binding 特有的。
  • <data> 标签内部定义了布局中可用的变量。
  • android:text="@{user.name}" 表示 TextView 的文本会自动绑定到 User 对象的 name 属性上。

步骤 3: 在 Activity 中使用 Data Binding

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 使用 Data Binding 加载布局binding = DataBindingUtil.setContentView(this, R.layout.activity_main);User user = new User("John Doe", "john.doe@example.com");// 设置数据对象binding.setUser(user);}
}

注释:

  • ActivityMainBinding 是由 Data Binding 插件自动生成的,对应于你的布局文件。
  • 使用 DataBindingUtil.setContentView 替代传统的 setContentView 方法。
  • 直接通过生成的 binding 类来访问 UI 元素和设置数据。

View Binding

View Binding 提供了对视图更直接、类型安全的访问,它自动为布局中的每个视图生成一个绑定类。

步骤 1: 在 build.gradle 文件中启用 View Binding

android {...viewBinding {enabled = true}
}

步骤 2: 在 Activity 中使用 View Binding

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 替代 findViewByIdbinding = ActivityMainBinding.inflate(getLayoutInflater());View view = binding.getRoot();setContentView(view);// 现在可以直接通过 binding 访问布局中的视图TextView textView = binding.textView;textView.setText("Hello, View Binding!");}
}

注释:

  • ActivityMainBinding 是由 View Binding 自动生成的,与你的布局文件名相对应。
  • inflate 方法用于生成布局并返回绑定对象。
  • binding.getRoot() 返回布局的根视图,可以像普通布局一样设置给 setContentView
  • 现在你可以直接通过 binding 访问布局中的所有视图,无需再调用 findViewById

http://www.mrgr.cn/news/227.html

相关文章:

  • 家族风云录:Red Hat与它的“调皮弟弟”CentOS,一场IT界的欢乐大戏
  • x264 编码器像素运算系列:sad 函数
  • 经纬嵌入式面试题及参考答案(万字长文)
  • Xilinx FPGA在线升级——汇总
  • Django 中显示图片
  • 汽车EDI:法雷奥Valeo EDI项目案例
  • 一篇文章带你实现大模型及RAG入门---小白速进
  • 仿RabbitMq实现简易消息队列正式篇(连接篇)
  • SpringBoot 自动配置(Condition)
  • MySQL学习2之事务ACID特性以及实现机制
  • sanic + webSocket:股票实时行情推送服务实现
  • Redis的基本概念和使用
  • Nios II的BSP Editor
  • JNI编程二:JNI数据类型
  • 【Android 笔记】ADB 操作命令总结(持续更新)
  • mysql-windows下安装DBeaver管理mysql
  • Python Django 框架 01
  • php函数
  • 数据结构—— 初识二叉树
  • 探索微软Edge浏览器的隐藏玩法