BaseViewModel

48 阅读1分钟
package com.alibaba.genie.panel.basic.base.mvvm;

import android.app.Application;
import android.arch.lifecycle.AndroidViewModel;
import android.arch.lifecycle.Lifecycle;
import android.arch.lifecycle.LifecycleOwner;
import android.os.Bundle;
import android.support.annotation.NonNull;

import com.alibaba.genie.panel.basic.base.SingleLiveData;

import java.util.HashMap;
import java.util.Map;

public class BaseViewModel extends AndroidViewModel implements IBaseViewModel {

    private UiChangeEvent uc;

    public BaseViewModel(@NonNull Application application) {
        super(application);
    }

    @Override
    public void onAny(LifecycleOwner var1, Lifecycle.Event var2) {

    }

    @Override
    public void onCreate() {

    }

    @Override
    public void onDestroy() {

    }

    @Override
    public void onStart() {

    }

    @Override
    public void onStop() {

    }

    @Override
    public void onResume() {

    }

    @Override
    public void onPause() {

    }


    public UiChangeEvent getUiChange() {
        if (this.uc == null) {
            this.uc = new UiChangeEvent();
        }

        return this.uc;
    }

    public void finish() {
        this.getUiChange().finishEvent.postValue(null);
    }

    public void finish(int resultCode, Bundle bundle) {
        Map<String, Object> params = new HashMap(2);
        params.put("REQUEST_CODE", resultCode);
        if (bundle != null) {
            params.put("BUNDLE", bundle);
        }

        this.getUiChange().finishForResultEvent.postValue(params);
    }

    public String getString(int id) {
        return this.getApplication().getString(id);
    }

    public void showToast(String message) {
        this.getUiChange().showToastEvent.postValue(message);
    }

    public void showLoading() {
        this.getUiChange().showLoadingEvent.postValue(null);
    }
    public void showLoading(String info) {
        this.getUiChange().showLoadingEvent.postValue(info);
    }

    public void showEmptyView() {
        this.getUiChange().showEmptyEvent.postValue(null);
    }
    public void showEmptyView(String info) {
        this.getUiChange().showEmptyEvent.postValue(info);
    }

    public void hideStateView() {
        this.getUiChange().hideStateViewEvent.postValue(null);
    }

    public void openActivity(Class<?> cls, Object... objects) {
        if (this.getUiChange().openActivityEvent != null) {
            Map<String, Object> params = new HashMap();
            params.put("CLASS", cls);
            params.put("PARAMS", objects);
            this.getUiChange().openActivityEvent.postValue(params);
        }

    }

    public static final class UiChangeEvent extends SingleLiveData {
        public SingleLiveData<Map<String, Object>> openActivityEvent = new SingleLiveData();
        public SingleLiveData<Void> finishEvent = new SingleLiveData();
        public SingleLiveData<Map<String, Object>> finishForResultEvent = new SingleLiveData();
        public SingleLiveData<String> showToastEvent = new SingleLiveData();
        public SingleLiveData<String> showLoadingEvent = new SingleLiveData();
        public SingleLiveData<String> showEmptyEvent = new SingleLiveData();
        public SingleLiveData<Void> hideStateViewEvent = new SingleLiveData();

        public UiChangeEvent() {
        }
    }

}