AdvertisementViewModel.java 2.41 KB
package com.polysoft.nafmii.viewmodel;

import android.app.Activity;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;

import com.polysoft.nafmii.bean.AdvertisementBean;
import com.polysoft.nafmii.constants.ServerApi;
import com.polysoft.nafmii.enums.StateEnum;
import com.polysoft.nafmii.net.RequestBack;
import com.polysoft.nafmii.utils.TimerUtils;
import com.whaty.nafmii.BuildConfig;

public class AdvertisementViewModel extends ViewModel {

    private MutableLiveData<LiveData> dataModel = new MutableLiveData<>();
    private final LifecycleOwner owner;

    public static AdvertisementViewModel newInstance(FragmentActivity owner) {
        ViewModelProvider.Factory factory = new ViewModelProvider.Factory() {
            @NonNull
            @Override
            public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
                return (T) new AdvertisementViewModel(owner);
            }
        };

        return new ViewModelProvider(owner, factory).get(AdvertisementViewModel.class);
    }

    AdvertisementViewModel(LifecycleOwner owner) {
        this.owner = owner;
        this.fetchData();
    }

    public void observe(Observer<LiveData> observer) {
        this.dataModel.observe(this.owner, observer);
    }


    private void fetchData() {
        ServerApi.postAdvertisement(new RequestBack<AdvertisementBean>() {
            @Override
            protected void onResponse(StateEnum state, AdvertisementBean data, String message) {
                if (state.state == StateEnum.OK.state) {
                    dataModel.setValue(new LiveData(data));
                } else {
                    dataModel.setValue(new LiveData(null));
                }
            }
        });
    }


    public static class LiveData {
        public final AdvertisementBean data;

        LiveData(AdvertisementBean data) {
            this.data = data;
        }

        public boolean empty() {
            if (BuildConfig.DEBUG) {
                return false;
            }
            return null == this.data || TextUtils.isEmpty(this.data.getPicUrl());
        }
    }

}