Skip to content

Commit

Permalink
添加懒加载Fragment--MVVM
Browse files Browse the repository at this point in the history
  • Loading branch information
Leonw2229 committed Jun 8, 2019
1 parent 9d2c0c2 commit 061bcba
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import cn.madog.module_arch.ui.BaseActivity
* @update 2019/4/3 10:30 AM
* @version 1
*/
open class BaseActivityMVVM : BaseActivity() {
abstract class BaseActivityMVVM : BaseActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import cn.madog.module_arch.ui.BaseFragment
* @update 2019/4/3 5:03 PM
* @version 1
*/
open class BaseFragmentMVVM: BaseFragment(){
abstract class BaseFragmentMVVM: BaseFragment(){

/**
* 设置当前页面的ViewModel,可以调用多次,不负责保存 ViewModel实例,需自己保存,只是处理了常用的事件,比如弹框
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package cn.madog.module_arch.architecture.mvvm

import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import cn.madog.module_arch.entity.ModelActionEvent
import cn.madog.module_arch.entity.TipsStateEvent
import cn.madog.module_arch.extend.toast
import cn.madog.module_arch.ui.BaseFragment
import cn.madog.module_arch.ui.BaseLazyFragment

/**
* @description
*
* @author leon.w
* @create 2019/4/3 5:03 PM
* @update 2019/4/3 5:03 PM
* @version 1
*/
abstract class BaseLazyFragmentMVVM: BaseLazyFragment(){

/**
* 设置当前页面的ViewModel,可以调用多次,不负责保存 ViewModel实例,需自己保存,只是处理了常用的事件,比如弹框
* @param viewModel 继承至 {@link(BaseViewModel)}
*/
protected fun <VM : BaseViewModel> setViewModel(viewModel: Class<VM>): VM {
val vm = ViewModelProviders.of(this).get(viewModel)
handleActionEvent(vm)
return vm
}

private fun <VM : BaseViewModel> handleActionEvent(vm: VM) {
vm.getUiState().observe(this, Observer {

when (it) {
is TipsStateEvent -> {
handleTipsActionEvent(it)
}
else -> handleOtherActionEvent(it)
}
})
}

private fun handleTipsActionEvent(event: TipsStateEvent) {
when (event.state) {
TipsStateEvent.UI_STATE_PROCESSED -> {
showWarningMessage(event.message)
}

TipsStateEvent.UI_STATE_SUCCESS -> {
showSuccessMessage(event.message,event.confirmText)
}

TipsStateEvent.UI_STATE_ERROR -> {
showErrorMessage(event.message)
}
TipsStateEvent.UI_STATE_WARNING -> {
showWarningCancelMessage(event.message,event.cancelText)
}
TipsStateEvent.UI_STATE_DISMISS_SHOW_TOAST -> {
dismissDialog()
context?.toast(event.message)
}
TipsStateEvent.UI_STATE_SHOW_TOAST -> {
context?.toast(event.message)
}
else -> {
dismissDialog()
}
}
}

/**
* 处理其他没有预处理的动作事件
*/
protected fun handleOtherActionEvent(actionEvent: ModelActionEvent) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import cn.madog.module_arch.entity.ModelActionEvent
* @update 2019/4/3 10:29 AM
* @version 1
*/
open class BaseViewModel : ViewModel() {
abstract class BaseViewModel : ViewModel() {
protected val uiState by lazy { UiStateResource() }

/**
Expand Down

0 comments on commit 061bcba

Please sign in to comment.