package com.hpw.myapp.ui.tv.presenter; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.hpw.mvpframe.utils.helper.RxUtil; import com.hpw.myapp.ui.tv.contract.TvContract; import com.hpw.myapp.ui.tv.model.FirstBannerBean; import org.json.JSONArray; import org.json.JSONObject; import java.lang.reflect.Type; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import rx.Observable; /** * Created by hpw on 16/12/4. */ public class FirstPresenter extends TvContract.FirstPresenter { private int topCount = 0; private int currentTopCount = 0; @Override public void getFirstData() { mRxManager.add(mModel.getFirstData() .subscribe( data -> mView.showContent(data), e -> mView.showError("数据加载失败ヽ(≧Д≦)ノ") )); } @Override public void getBannerData() { mRxManager.add(mModel.getBannerData() .subscribe( data -> { List<FirstBannerBean> banners = null; JSONArray jsonArray = new JSONObject((Map) data).optJSONArray("app-focus"); Gson mGson = new Gson(); Type type = new TypeToken<List<FirstBannerBean>>() { }.getType(); if (jsonArray != null) { banners = mGson.fromJson(jsonArray.toString(), type); } mView.showBannerContent(banners); topCount = banners.size(); }, e -> mView.showError("数据加载失败ヽ(≧Д≦)ノ") )); } @Override public void startInterval() { mRxManager.add(Observable.interval(2, TimeUnit.SECONDS) .compose(RxUtil.rxSchedulerHelper()) .subscribe(aLong -> { if (currentTopCount == topCount) currentTopCount = 0; mView.doInterval(currentTopCount++); } )); } @Override public void onStart() { } }