【Android】实现 MVVM 架构,创建 ViewModel、LiveData 和数据绑定等组件在 XML 中使用数据绑定

ops/2024/10/18 12:23:07/

在 Android 中实现 MVVM 架构,需要创建 ViewModel、LiveData 和数据绑定等组件,并在 XML 中使用数据绑定来将 ViewModel 的数据和 UI 绑定在一起。以下是一个简单的示例代码:

  1. 创建 ViewModel 类:
public class MyViewModel extends ViewModel {private MutableLiveData<String> text = new MutableLiveData<>();public LiveData<String> getText() {return text;}public void setText(String value) {text.setValue(value);}
}
  1. 创建 XML 布局文件,使用数据绑定来绑定 ViewModel 的数据:
<layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="viewModel"type="com.example.MyViewModel" /></data><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><EditTextandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@={viewModel.text}" /><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="@{viewModel.text}" /></LinearLayout>
</layout>
  1. 在 Activity 或 Fragment 中设置数据绑定:
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);MyViewModel viewModel = new ViewModelProvider(this).get(MyViewModel.class);ActivityMainBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_main);binding.setViewModel(viewModel);binding.setLifecycleOwner(this);
}

以上代码示例中,我们创建了一个简单的 MyViewModel 类来存储和管理数据。在 XML 布局文件中,我们使用了数据绑定来将 ViewModel 的数据和 EditText、TextView 绑定在一起。在 Activity 中,我们使用 DataBindingUtil 来设置数据绑定,并将 ViewModel 与 XML 布局文件进行绑定。


http://www.ppmy.cn/ops/20329.html

相关文章

基于STM32单片机的毫米波雷达测距报警系统设计

基于STM32单片机的毫米波雷达测距报警系统设计 摘要&#xff1a;本文设计并实现了一种基于STM32单片机的毫米波雷达测距报警系统。该系统采用LD303-24G雷达模块进行精确测距&#xff0c;通过OLED显示屏实时显示测量距离和报警距离&#xff0c;同时提供按键设置报警值的功能。当…

介绍 TensorFlow 的基本概念和使用场景

TensorFlow是一个开源的机器学习框架&#xff0c;由Google开发并发布。它提供了一个灵活且高效的方式来构建和训练各种机器学习模型。 TensorFlow的核心概念是张量&#xff08;tensor&#xff09;&#xff0c;它是多维数组的扩展。张量是TensorFlow中数据的主要表示形式&#…

【网络安全】HTTP协议 — 特点

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 学习目标​ 一、请求与响应 1.服务器和客户端 二、不保存状态 1.不保存状态的协议 三、资源定位 1.URI&#xff08;统一资源标识符&#xff09; 四、请求方法 1.请求方法 五…

UI设计饱和了吗?赚钱吗?

UI设计饱和了吗&#xff1f;赚钱吗&#xff1f; 关于UI设计行业是否饱和了呢&#xff0c;这个问题其实比较有趣。在当下&#xff0c;请说出一个看起来没有饱和并且你会很想去做且能做的职业&#xff1f;有没有&#xff1f;没有&#xff01;很多人都太浮躁。眼高手低。 那么好…

解决Android Studio安卓开发写入文件问题

有很多小伙伴想把文件写进安卓系统储存失败&#xff0c;类似下面的代码 val file File("account.txt")val writer BufferedWriter(FileWriter(file))writer.use {it.write(username "," password)} 用java方式写入读出文件但是显示成功但是找不到文件…

新科技辅助器具赋能视障生活:让盲人出行融入日常

随着科技日新月异的发展&#xff0c;一款名为蝙蝠避障专为改善盲人日常生活的盲人日常生活辅助器具应运而生&#xff0c;它通过巧妙整合实时避障与拍照识别功能&#xff0c;成功改变了盲人朋友们的生活格局&#xff0c;为他们提供了更为便捷、高效的生活体验。 这款非同…

[MoeCTF-2022]Sqlmap_boy

title:[MoeCTF 2022]Sqlmap_boy 查看网页源代码&#xff0c;得到提示 <!-- $sql select username,password from users where username".$username." && password".$password.";; --> 用万能密码绕过&#xff0c;用’"闭合 爆数据库…

electron中ipcMain用法

在Electron中&#xff0c;ipcMain模块是一个非常重要的组件&#xff0c;它用于在Electron的主进程&#xff08;main process&#xff09;和渲染进程&#xff08;renderer processes&#xff09;之间进行异步消息通信。ipcMain与ipcRenderer模块一起工作&#xff0c;允许两者之间…