在具有 MVVM 概念的视图模型中可绘制



我混淆了 MVVM 的概念,即 ViewModel 不应该引用 View。
在我的用例中,我必须使用数据绑定并包装 LiveData 绘制对象,并在 xml 视图中观察其值。

基于安卓的建议,我实现如下
https://developer.android.com/topic/libraries/architecture/viewmodel

如果视图模型需要应用程序上下文,例如查找 系统服务,它可以扩展AndroidViewModel类并具有 在构造函数中接收应用程序的构造函数,因为 应用程序类扩展上下文。

MyViewModel.kt

class MyViewModel(application: Application): AndroidViewModel(application){  
  private val _showIcon = MutableLiveData<Drawable>  
  val showIcon: LiveData<Drawable>  
    get() = _showIcon
  fun applyChanged(){
     if(condition){
       _showIcon.value = AppCompatResources.getDrawable(getApplication(),R.drawable.icon1)
     }else{
       _showIcon.value = null
     }
  }
}

main_activity.xml

   android:drawableTop="@{viewModel.showIcon}"

问题:
这种方法适用于 MVVM 概念吗?我是否与 ViewModel 中的上下文有任何关系以防止泄漏内存问题?
或者我的代码中有任何潜在的问题?

非常感谢!

我认为没有必要

使用数据绑定或查看模型来完成您想要做的事情。只需直接在 xml 文件中引用可绘制对象即可。如果它为 null,则它不会存在。这是有效的,因为您是从自己的资源获取图像资源。如果你应该从服务器或本地数据库获取任何可绘制对象,你的方法将是有意义的。

相关内容

  • 没有找到相关文章

最新更新