package com.smartalk.gank.presenter; import android.content.Context; import com.smartalk.gank.http.PanClient; import com.smartalk.gank.model.GankData; import com.smartalk.gank.model.entity.Gank; import com.smartalk.gank.view.IGankView; import java.util.ArrayList; import java.util.List; import rx.android.schedulers.AndroidSchedulers; import rx.functions.Action1; import rx.functions.Func1; import rx.schedulers.Schedulers; /** * 控制干货界面的presenter * Created by panl on 15/12/25. */ public class GankPresenter extends BasePresenter<IGankView> { public GankPresenter(Context context, IGankView iView) { super(context, iView); } @Override public void release() { subscription.unsubscribe(); subscription = null; } public void fetchGankData(int year, int month, int day) { iView.showProgressBar(); subscription = PanClient.getGankRetrofitInstance().getDailyData(year, month, day) .map(new Func1<GankData, List<Gank>>() { @Override public List<Gank> call(GankData gankData) { return addAllResults(gankData.results); } }) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Action1<List<Gank>>() { @Override public void call(List<Gank> gankList) { iView.showGankList(gankList); iView.hideProgressBar(); } }, new Action1<Throwable>() { @Override public void call(Throwable throwable) { iView.hideProgressBar(); iView.showErrorView(); } }); } private List<Gank> addAllResults(GankData.Result results) { List<Gank> mGankList = new ArrayList<>(); if (results.androidList != null) mGankList.addAll(results.androidList); if (results.iOSList != null) mGankList.addAll(results.iOSList); if (results.前端List != null) mGankList.addAll(results.前端List); if (results.appList != null) mGankList.addAll(results.appList); if (results.拓展资源List != null) mGankList.addAll(results.拓展资源List); if (results.瞎推荐List != null) mGankList.addAll(results.瞎推荐List); if (results.休息视频List != null) mGankList.addAll(0, results.休息视频List); return mGankList; } }