浅谈Android开发中的MVVM模式 | 您所在的位置:网站首页 › mvvm网络在哪一层 › 浅谈Android开发中的MVVM模式 |
前言
看到有人说 MVVM 核心是 双向绑定,没有使用 Databinding 的项目都是假 MVVM 。 即:MVVM == 双向绑定,双向绑定 == Databinding,MVVM == Databinding。 今天我们便来聊一聊 Android 中的 MVVM。 MVVMMVVM(Model-View-ViewModel)最早由微软提出。ViewModel指 "Model of View"——视图的模型。 简而言之,视图随数据改变,数据随视图改变。 在 Android 中我们通过 Jetpack 提供的多个组件来实现 MVVM 。 Activity/Fragment 通过观察 ViewModel 中的 LiveData 来更新界面。 Repository 通过更新 ViewModel 中的 LiveData 来更新界面。 单纯的文字可能比较晦涩难懂,我们结合代码来看会更加清晰。 TestActivity import android.os.Bundle import android.view.LayoutInflater import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import com.example.fragment.project.databinding.ActivityTestBinding import com.example.fragment.project.model.TestViewModel class TestActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val bind = ActivityTestBinding.inflate(LayoutInflater.from(this)) setContentView(bind.root) // 使用“by viewModels()”Kotlin属性委托获取ViewModel val viewModel: TestViewModel by viewModels() bind.btn.setOnClickListener { //通过LiveData更新天气信息 viewModel.updateWeather("阴天") } //通过观察LiveData来更新界面 viewModel.weatherResult.observe(this) { bind.weather.text = it } //通过ViewModel获取天气信息 viewModel.getWeather() } } activity_test.xml TestViewModel import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class TestViewModel : ViewModel() { // 这边就不写Model直接更新数据 val weatherResult = MutableLiveData() fun getWeather() { // 获取网络数据或本地数据库数据等 weatherResult.postValue("晴天") } fun updateWeather(str: String) { // 更新网络数据或本地数据库数据等 weatherResult.postValue(str) } }至此 Android 开发中的 MVVM 算是全部讲完。 MVVM 与 DataBinding 的关系原本计最后详细讲下 Databinding | 数据绑定库 ,写到这里又觉得没必要。 怎么说呢,MVVM 是一种架构模式,而 DataBinding 是谷歌推出的方便实现 MVVM 的工具。 对此感兴趣的童鞋可以自行去官网查看。 Thanks以上就是本篇文章的全部内容,如有问题欢迎指出,我们一起进步。 如果喜欢的话希望点个赞吧,您的鼓励是我前进的动力。 谢谢~~ 最后推荐一个入门级的项目 fragmject ,通过对Kotlin和Jetpack全家桶的系统运用,实现的一个功能完备符合主流市场标准App。 代码简单,内容全面,知识详细,快速上手,对理解其他项目设计思想和封装技巧也很有帮助。 |
CopyRight 2018-2019 实验室设备网 版权所有 |