以下是用 LiveData 和 Repository 设置 ViewModel 的正确方法: 创建Repository 代码语言:txt 复制 class MyRepository(private val apiService: ApiService) { private val _data = MutableLiveData<MyData>() val data: LiveData<MyData> get() = _data ...
2.创建StudentViewModel,继承自AndroidViewModel。在StudentViewModel中实例化数据库(另一种做法是在Repository),并对外暴露LiveData<List<Student>>。 publicclassStudentViewModelextendsAndroidViewModel{privateMyDatabase myDatabase;privateLiveData<List<Student>> liveDataStudent;publicStudentViewModel(@NonNullApplication appli...
2.ViewModel与LiveData的使用 在MVVM架构中,Repository承担着统筹本地存储与网络数据访问的功能,这里我们仅使用本地存储 在Repository.kt中,添加方法 object Repository { val recordDao = AppDatabase.getDatabase(DayRecordApplication.context).recordDao() fun getAllRecordsByTitle(title: String): LiveData<Li...
MVVM模式比较易于进行单元测试。ViewModel层只负责处理数据,在进行单元测试时,测试不需要构造一个fragment/Activity/TextView等等来进行数据层的测试。同理View层也一样,只需要输入指定格式的数据即可进行测试,而且两者相互独立,不会互相影响。 6、数据复用: ViewModel层对数据的获取和处理逻辑,尤其是使用Repository模式时,...
ViewModel中主要通过Repository来获取数据,并根据View层传递过来的事件指令操作数据,数据发生改变后,View层监听到变化并更新UI。通过这种方式,完成双向绑定和MVVM的设计流程。 关于ViewModel和Repository管理的相关设计类图如下: ViewModelManger : 主要是对ViewModel的生命周期进行管理,一个CustomContext对应一个BaseViewModel,而...
其实不能叫扯上关系吧,ViewModel和LiveData属于「架构组件」,而协程是「异步工具类」,ViewModel和LiveData搭上了协程这条快车道,让Google推了几年的AAC架构更加快的让人接受了,真香。 国际惯例,官网镇楼。 https://developer.android.com/topic/libraries/architecture/viewmodel ...
myViewModel = ViewModelProvider(this).get(MyViewModel::class.java) //7.设置按钮的点击监听器 btnPlus.setOnClickListener { myViewModel.countPlus() refreshCount() } refreshCount() } //6.设置更新数据(暂时,后面会调整为livedata形式) fun refreshCount() { ...
ViewModel中主要通过Repository来获取数据,并根据View层传递过来的事件指令操作数据,数据发生改变后,View层监听到变化并更新UI。通过这种方式,完成双向绑定和MVVM的设计流程。 关于ViewModel和Repository管理的相关设计类图如下: ViewModelManger : 主要是对ViewModel的生命周期进行管理,一个CustomContext对应一个BaseViewModel,而...
Mvvm模式: Databinding 与 ViewModel+LiveData+Repository 作者:Yagami3zZ, 前言: 本文主要是对常见设计模式的一些分析,以及讲述在Android项目中实现Mvvm模式的两种方式。通过Databinding或者ViewModel+LiveData+Repository如何实现Mvvm的相关设计以及他们各自优缺点的一些比较。
为了便于ViewModel的工作,创建一个ProjectRespository来与GitHub服务交互,并最终为ViewModel提供一个LiveData对象.以下代码片段显示了getProjectList()API实现. public class ProjectRepository { private GitHubService gitHubService; //… public LiveData<List<Project>> getProjectList(String userId) { ...