package name.caiyao.microreader.presenter.impl; import android.content.Context; import com.google.gson.Gson; import name.caiyao.microreader.api.guokr.GuokrRequest; import name.caiyao.microreader.bean.guokr.GuokrHot; import name.caiyao.microreader.config.Config; import name.caiyao.microreader.presenter.IGuokrPresenter; import name.caiyao.microreader.ui.iView.IGuokrFragment; import name.caiyao.microreader.utils.CacheUtil; import rx.Observer; import rx.Subscription; import rx.android.schedulers.AndroidSchedulers; import rx.schedulers.Schedulers; /** * Created by 蔡小木 on 2016/4/22 0022. */ public class GuokrPresenterImpl extends BasePresenterImpl implements IGuokrPresenter { private IGuokrFragment mGuokrFragment; private CacheUtil mCacheUtil; public GuokrPresenterImpl(IGuokrFragment guokrFragment, Context context) { if (guokrFragment==null) throw new IllegalArgumentException("guokrFragment must not be null"); this.mGuokrFragment = guokrFragment; mCacheUtil = CacheUtil.get(context); } @Override public void getGuokrHot(final int offset) { mGuokrFragment.showProgressDialog(); Subscription s = GuokrRequest.getGuokrApi().getGuokrHot(offset) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<GuokrHot>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { mGuokrFragment.hidProgressDialog(); mGuokrFragment.showError(e.getMessage()); } @Override public void onNext(GuokrHot guokrHot) { mGuokrFragment.hidProgressDialog(); mGuokrFragment.updateList(guokrHot.getResult()); mCacheUtil.put(Config.GUOKR + offset, new Gson().toJson(guokrHot)); } }); addSubscription(s); } @Override public void getGuokrHotFromCache(int offset) { if (mCacheUtil.getAsJSONObject(Config.GUOKR + offset) != null) { GuokrHot guokrHot = new Gson().fromJson(mCacheUtil.getAsJSONObject(Config.GUOKR + offset).toString(), GuokrHot.class); mGuokrFragment.updateList(guokrHot.getResult()); } } }