hegaojian / JetpackMvvm

:chicken::basketball:一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
https://github.com/hegaojian/JetpackMvvm
Apache License 2.0
3.15k stars 614 forks source link

BaseVmDbActivity 和 BaseVmActivity 有重复的代码,为什么继承实现呢? #18

Closed KevinChang007 closed 4 years ago

KevinChang007 commented 4 years ago

abstract class BaseVmDbActivity<VM : BaseViewModel, DB : ViewDataBinding> : BaseVmActivity() {

lateinit var mDatabind: DB

/**
 * 创建DataBinding
 */
override fun createContentView() {
    mDatabind = DataBindingUtil.setContentView(this, layoutId())
    mDatabind.lifecycleOwner = this
}

}

KevinChang007 commented 4 years ago

BaseVmDbFragment 和 BaseVmFragment 也是一样的问题。 没有继承有特殊情况的考虑吗?

hegaojian commented 4 years ago

abstract class BaseVmDbActivity<VM : BaseViewModel, DB : ViewDataBinding> : AppCompatActivity() { 兄弟你是不是看错了,我的BaseVmDbActivity没有继承BaseVmActivity啊,你拉下代码看看

KevinChang007 commented 4 years ago

我没写清楚,上面的代码是我改过后的。源代码为什么不继承呢 ?有特殊考虑吗

KevinChang007 commented 4 years ago

BaseViewModelExt.kt 中也有较多重复的代码!  ̄□ ̄||

hegaojian commented 4 years ago

因为当时考虑到有些人不想用Databinding,所以写了2种基类, BaseVmDbActivity支持ViewModel,Databinding的泛型传入 BaseVmActivity仅有ViewModel,将Databinding相关的代码给去掉了 但是经你这么一说,这么写确实显得太low了,BaseVmDbActivity可以直接继承BaseVmActivity就好了,能减少很多重复代码,也好维护了...... 当时可能脑子抽了吧,没想到这一层:satisfied::satisfied::satisfied: