diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java index 006ec48cf6..4127633019 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/fragment/V2XShareEventsFragment.java @@ -78,35 +78,85 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba private void initData() { loadingImageView = mRootView.findViewById(R.id.loading_imageview); v2XAnimationManager.animationWithTarget(loadingImageView, AnimationResources.loadingRes, 100); - getShareEventList(pageNum, 10); - getShareEventDescription(); + getShareEventResponse(); } /* - * 热心指数等 + * 获取热心指数,分享列表等分享内容 * */ - private void getShareEventDescription() { - v2XShareNetworkModel.getShareEventDescription(new V2XRefreshCallback() { + private void getShareEventResponse() { + v2XShareNetworkModel.getShareEventResponse(pageNum, 10, new V2XRefreshCallback() { @Override public void onSuccess(Object result) { - ShareEventDescription resultData = (ShareEventDescription) result; + if (result instanceof ShareEventDescription) { + ShareEventDescription resultData = (ShareEventDescription) result; - if (resultData != null && resultData.getResult() != null - && resultData.getResult().getEnthusiasmIndex() != null) { - dataArrayList.add(resultData.getResult().getEnthusiasmIndex()); - Log.d(TAG, "热心指数:" + resultData.getResult().getEnthusiasmIndex()); + if (resultData != null && resultData.getResult() != null + && resultData.getResult().getEnthusiasmIndex() != null) { + dataArrayList.add(resultData.getResult().getEnthusiasmIndex()); + Log.d(TAG, "热心指数:" + resultData.getResult().getEnthusiasmIndex()); + } + } else if (result instanceof ShareEventItem) { + loadSuccessWithShareEventList(result); } - countDownLatch.countDown(); } @Override public void onFail(String msg) { - countDownLatch.countDown(); loadingError(true); } }); + } + /* + * 我的分享列表数据处理 + * */ + private void loadSuccessWithShareEventList(Object result) { + ShareEventItem resultData = (ShareEventItem) result; + ShareEventLoadMoreItem item = new ShareEventLoadMoreItem(); + if (resultData != null && resultData.getResult() != null) { + if (resultData.getResult().getPage() != null) { + int total = resultData.getResult().getPage().getTotal(); + if (total == 0) { + //空白 + item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY); + dataArrayList.add(item); + } else { + if (resultData.getResult().getPage().getContent().size() > 0) { + //当前页有数据 + if (dataArrayList.size() > 0) { + Object data = dataArrayList.get(dataArrayList.size() - 1); + if (data instanceof ShareEventLoadMoreItem) { + dataArrayList.remove(dataArrayList.size() - 1); + } + } + dataArrayList.addAll(resultData.getResult().getPage().getContent()); + item.setViewType(ShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS); + item.setStatusText("查看更早记录"); + } else { + //当前页没有数据 + item.setViewType(ShareEventItemEnum.ITEM_TYPE_NO_MORE); + item.setStatusText("没有更多了"); + } + if (total > 10) { + dataArrayList.add(item); + } + } + } + Log.d(TAG, "分享列表:" + dataArrayList.get(0)); + } else { + //空白 + item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY); + dataArrayList.add(item); + } + adapter.notifyDataSetChanged(); + v2XAnimationManager.stop(); + } + + /* + * error界面 + * */ private void loadingError(boolean error) { reloadBUtton = mRootView.findViewById(R.id.loading_error); if (error) { @@ -114,7 +164,17 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba reloadBUtton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - getShareEventList(pageNum, 10); + v2XShareNetworkModel.getShareEventList(pageNum, 10, new V2XRefreshCallback() { + @Override + public void onSuccess(Object result) { + loadSuccessWithShareEventList(result); + } + + @Override + public void onFail(String msg) { + + } + }); reloadBUtton.setVisibility(View.INVISIBLE); } }); @@ -124,70 +184,6 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba v2XAnimationManager.stop(); } - /* - * 分享列表 - * */ - public void getShareEventList(int page, int size) { - v2XAnimationManager.start(); - v2XShareNetworkModel.getShareEventList(page, size, new V2XRefreshCallback() { - @Override - public void onSuccess(Object result) { - ShareEventItem resultData = (ShareEventItem) result; - ShareEventLoadMoreItem item = new ShareEventLoadMoreItem(); - try { - if (resultData != null && resultData.getResult() != null) { - if (resultData.getResult().getPage() != null) { - int total = resultData.getResult().getPage().getTotal(); - if (total == 0) { - //空白 - item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY); - dataArrayList.add(item); - } else { - if (resultData.getResult().getPage().getContent().size() > 0) { - //当前页有数据 - if (dataArrayList.size() > 0) { - Object data = dataArrayList.get(dataArrayList.size() - 1); - if (data instanceof ShareEventLoadMoreItem) { - dataArrayList.remove(dataArrayList.size() - 1); - } - } - dataArrayList.addAll(resultData.getResult().getPage().getContent()); - item.setViewType(ShareEventItemEnum.ITEM_TYPE_LOAD_MORE_STATUS); - item.setStatusText("查看更早记录"); - } else { - //当前页没有数据 - item.setViewType(ShareEventItemEnum.ITEM_TYPE_NO_MORE); - item.setStatusText("没有更多了"); - } - if (total > 10){ - dataArrayList.add(item); - } - } - } - Log.d(TAG, "分享列表:" + dataArrayList.get(0)); - } else { - //空白 - item.setViewType(ShareEventItemEnum.ITEM_TYPE_SHARE_EMPTY); - dataArrayList.add(item); - } - adapter.notifyDataSetChanged(); -// countDownLatch.countDown(); - v2XAnimationManager.stop(); - - } catch (Exception e) { - Log.d(TAG,"分享列表错误信息",e.fillInStackTrace()); - } - - } - - @Override - public void onFail(String msg) { -// countDownLatch.countDown(); - v2XAnimationManager.stop(); - loadingError(true); - } - }); - } @NonNull @Override @@ -198,6 +194,16 @@ public class V2XShareEventsFragment extends MvpFragment implements AdapterCallba @Override public void loadMoreShareEventList() { - getShareEventList(pageNum + 1, 10); + v2XShareNetworkModel.getShareEventList(pageNum + 1, 10, new V2XRefreshCallback() { + @Override + public void onSuccess(Object result) { + loadSuccessWithShareEventList(result); + } + + @Override + public void onFail(String msg) { + + } + }); } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java index 6d9a4ee19c..1ffd5ed06f 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XShareNetworkModel.java @@ -1,11 +1,14 @@ package com.mogo.module.v2x.network; import android.content.Context; +import android.util.Log; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.data.BaseData; import com.mogo.commons.network.SubscribeImpl; import com.mogo.commons.network.Utils; +import com.mogo.module.v2x.entity.panel.ShareEventDescription; +import com.mogo.module.v2x.entity.panel.ShareEventItem; import com.mogo.service.MogoServicePaths; import com.mogo.service.network.IMogoNetwork; import com.mogo.utils.network.RequestOptions; @@ -14,12 +17,22 @@ import com.mogo.utils.network.utils.GsonUtil; import java.util.HashMap; import java.util.Map; +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.ObservableSource; +import io.reactivex.Observer; +import io.reactivex.Scheduler; import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Function; import io.reactivex.schedulers.Schedulers; +import retrofit2.http.FieldMap; public class V2XShareNetworkModel { private final Context mContext; private V2XApiService mRefreshApiService; + private static final String TAG = "V2XShareNetworkModel"; public V2XShareNetworkModel(Context context) { this.mContext = context; @@ -27,31 +40,93 @@ public class V2XShareNetworkModel { this.mRefreshApiService = network.create(V2XApiService.class, HttpConstant.Companion.getNetHost()); } - public void getShareEventDescription(V2XRefreshCallback callback) { - ShareEventParameter parameter = new ShareEventParameter("E841AB2028LZD00174"); + /* + * 两个任务串行 + * 1.分享次数,热心指数 + * 2.分享列表 + * */ + public void getShareEventResponse(int page, int size, V2XRefreshCallback callback) { + ShareEventParameter parameter = new ShareEventParameter(Utils.getSn()); Map parameters = new HashMap<>(); parameters.put("data", GsonUtil.jsonFromObject(parameter)); - mRefreshApiService.getEnthusiasmIndex(parameters) - .subscribeOn(Schedulers.io()) + Observable indexObservable = Observable.create(new ObservableOnSubscribe() { + + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + try { + //热心指数 + mRefreshApiService.getEnthusiasmIndex(parameters) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create((mContext))) { + @Override + public void onSuccess(BaseData resultData) { + super.onSuccess(resultData); + if (callback != null) { + callback.onSuccess(resultData); + } + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + if (callback != null) { + callback.onFail(message); + } + } + + }); + } catch (Exception e) { + e.printStackTrace(); + } + emitter.onNext("1"); + emitter.onComplete(); + } + }); + + Observable listObservable = Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + try { + getShareEventList(page, size, callback); + } catch (Exception e) { + e.printStackTrace(); + } + emitter.onNext("2"); + emitter.onComplete(); + } + }); + + indexObservable.flatMap(new Function>() { + @Override + public ObservableSource apply(String s) throws Exception { + return listObservable; + } + }) + .observeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new SubscribeImpl(RequestOptions.create((mContext))) { + .subscribe(new Observer() { + @Override - public void onSuccess(BaseData resultData) { - super.onSuccess(resultData); - if (callback != null) { - callback.onSuccess(resultData); - } + public void onSubscribe(Disposable d) { + } @Override - public void onError(String message, int code) { - super.onError(message, code); - if (callback != null) { - callback.onFail(message); - } + public void onNext(Object o) { + } + @Override + public void onError(Throwable e) { + + } + + @Override + public void onComplete() { + + } }); } @@ -59,7 +134,7 @@ public class V2XShareNetworkModel { * 分享列表 * */ public void getShareEventList(int page, int size, V2XRefreshCallback callback) { - ShareEventParameter parameter = new ShareEventParameter("E841AB2028LZD00174", page, 10); + ShareEventParameter parameter = new ShareEventParameter(Utils.getSn(), page, 10); HashMap parameters = new HashMap<>(); parameters.put("data", GsonUtil.jsonFromObject(parameter)); mRefreshApiService.getShareEventList(parameters)