package com.base.adapter; import android.util.Log; import com.App; import com.C; import com.base.DbRepository; import com.base.NetRepository; import com.base.util.NetWorkUtil; import java.util.HashMap; import java.util.List; /** * Created by baixiaokang on 16/12/27. */ public class AdapterPresenter<M> { private NetRepository mNetRepository;//仓库 private HashMap<String, Object> param = new HashMap<>();//设置远程网络仓库钥匙 private DbRepository mDbRepository; private int begin = 0; private final IAdapterView<M> view; interface IAdapterView<M> { void setEmpty(); void setNetData(List<M> data, int begin); void setDBData(List<M> data); void reSetEmpty(); } AdapterPresenter(IAdapterView mIAdapterViewImpl) { this.view = mIAdapterViewImpl; } public HashMap<String, Object> getParam() { return param; } public AdapterPresenter setNetRepository(NetRepository netRepository) { this.mNetRepository = netRepository; return this; } public AdapterPresenter setParam(String key, Object value) { this.param.put(key, value); return this; } public AdapterPresenter setDbRepository(DbRepository mDbRepository) { this.mDbRepository = mDbRepository; return this; } public void setBegin(int begin) { this.begin = begin; } public void fetch() { if (!NetWorkUtil.isNetConnected(App.getAppContext())) { getDbData(); return; } begin++; view.reSetEmpty(); if (mNetRepository == null) { Log.e("mNetRepository", "null"); return; } param.put(C.PAGE, begin); mNetRepository .getData(param) .subscribe(res -> view.setNetData(res.results, begin), err -> getDbData()); } private void getDbData() { if (mDbRepository != null) mDbRepository .getData(param) .subscribe( r -> view.setDBData((List<M>) r), e -> view.setEmpty()); else view.setEmpty(); } }