Commit 1f5d4113 authored by jianglx's avatar jianglx

修改会员模块支付跳转到我的待付订单页面多次打开的问题

parent c809a4b8
......@@ -62,10 +62,11 @@ public class RxBus {
* @return
*/
public static <T> Observable<T> tObservable(final Class<T> eventType){
return getInstance().mBus.ofType(eventType).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread());
return getInstance().mBus.ofType(eventType).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).unsubscribeOn(Schedulers.newThread());
}
/**
* 根据传递的 eventType 类型返回特定类型(eventType) 的被观察者
* @param eventType
......
......@@ -13,7 +13,6 @@ import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.frame.base.bus.LoginSuccessfulEvent;
import com.frame.base.bus.PaymentSuccessfulEvent;
import com.frame.base.bus.RxBus;
import com.frame.base.url.Constance;
import com.ruiwenliu.wrapper.base.BaseBean;
......
......@@ -66,7 +66,7 @@ import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
/**
......
......@@ -3,9 +3,13 @@ package com.rv.home.rv.module.ui.main.home.order;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import com.alibaba.android.arouter.launcher.ARouter;
......@@ -43,6 +47,8 @@ import java.util.LinkedHashMap;
import java.util.Map;
import butterknife.BindView;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
......@@ -64,6 +70,10 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
private IWXAPI api;
private long effTime = 0; // 失效时间
private OrderListBean.DataBeanX.DataBean payBean = null;
private int payPosition = -1;
private OrderListActivity.SwitchListener mListener;
public static ForPaymentFragment getInstance(int type) {
Bundle bundl = new Bundle();
bundl.putInt("type", type);
......@@ -72,6 +82,12 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
return fragment;
}
public static ForPaymentFragment getInstance(int type, OrderListActivity.SwitchListener listener) {
ForPaymentFragment fragment = getInstance(type);
fragment.mListener = listener;
return fragment;
}
@Override
public int getViewLayout() {
return R.layout.common_refresh;
......@@ -102,19 +118,15 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
}
});
mAdapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() {
@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
payPosition = position;
int id = view.getId();
if (id == R.id.tv_process) {
OrderListBean.DataBeanX.DataBean dataBean = (OrderListBean.DataBeanX.DataBean) adapter.getItem(position);
payShowSelect(dataBean.getNo(), dataBean.getOrderAmount());
} else if (id == R.id.tv_camp_process) {
OrderListBean.DataBeanX.DataBean dataBean = (OrderListBean.DataBeanX.DataBean) adapter.getItem(position);
payShowSelect(dataBean.getNo(), dataBean.getOrderAmount());
} else if (id == R.id.tv_member_pay) {
OrderListBean.DataBeanX.DataBean dataBean = (OrderListBean.DataBeanX.DataBean) adapter.getItem(position);
payShowSelect(dataBean.getNo(), dataBean.getOrderAmount());
if (id == R.id.tv_process || id == R.id.tv_camp_process || id == R.id.tv_member_pay) {
payBean = (OrderListBean.DataBeanX.DataBean) adapter.getItem(position);
payShowSelect(payBean.getNo(), payBean.getOrderAmount());
}
}
});
......@@ -125,23 +137,43 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
getEffectiveTime();
}
private Handler handler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (payPosition != -1) {
if (mAdapter != null && !mAdapter.getData().isEmpty()) {
mAdapter.getData().remove(payPosition);
mAdapter.notifyDataSetChanged();
}
}
if (mListener != null) {
mListener.switchTab(3);
}
}
};
private Disposable disposable;
@SuppressLint("CheckResult")
private void initRxBus() {
RxBus.tObservable(CancelOrderEvent.class)
.observeOn(Schedulers.newThread())
.subscribe(new Observer<CancelOrderEvent>(disposable) {
disposable = RxBus.tObservable(PaymentSuccessfulEvent.class)
.observeOn(Schedulers.io())
.subscribe(new Consumer<PaymentSuccessfulEvent>() {
@Override
public void onNext(CancelOrderEvent event) {
onRefresh();
public void accept(PaymentSuccessfulEvent payEvent) throws Exception {
handler.sendEmptyMessage(0);
}
});
}
@Override
public void onDestroyView() {
super.onDestroyView();
handler.removeCallbacksAndMessages(null);
if (disposable != null && !disposable.isDisposed()) {
disposable.dispose();
}
}
@Override
......@@ -184,7 +216,6 @@ public class ForPaymentFragment extends BaseFragment<CommonPresenter> implements
public void onRefresh() {
mPage = 1;
orderData(mPage);
}
@Override
......
......@@ -40,15 +40,18 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
private OrderMenuAdapter menuAdapter;
private TabAdapter mAdapter;
public final static int TYPE_FOR_PAYMENT=0;//待付款
public final static int TYPE_TO_TRAVEL=1;//待出行
public final static int TYPE_HAVE_TO_TRAVEL=2;//已出行
public final static int TYPE_COMPLETED=3;//已完成
public final static int TYPE_ALL_ORDER=4;//全部
public final static int TYPE_FOR_PAYMENT = 0;//待付款
public final static int TYPE_TO_TRAVEL = 1;//待出行
public final static int TYPE_HAVE_TO_TRAVEL = 2;//已出行
public final static int TYPE_COMPLETED = 3;//已完成
public final static int TYPE_ALL_ORDER = 4;//全部
private int menuPosition;
public static Intent getIntent(Context context,int position) {
return new Intent(context, OrderListActivity.class).putExtra("position",position);
};
public static Intent getIntent(Context context, int position) {
return new Intent(context, OrderListActivity.class).putExtra("position", position);
}
;
@Override
......@@ -58,7 +61,7 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
@Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
menuPosition=intent.getIntExtra("position",0);
menuPosition = intent.getIntExtra("position", 0);
titleView.setTitle(mActivity.getString(R.string.rv_my_order));
initRecyclerView();
initViewpager();
......@@ -76,18 +79,17 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
}
/**
* 初始化RecyclerView
*/
private void initRecyclerView(){
private void initRecyclerView() {
recyclerView.setLayoutManager(new GridLayoutManager(mActivity, 5));
menuAdapter=new OrderMenuAdapter();
recyclerView.setAdapter(menuAdapter );
menuAdapter = new OrderMenuAdapter();
recyclerView.setAdapter(menuAdapter);
recyclerView.addItemDecoration(new SpaceItemDecoration(5));
GallerySnapHelper snapHelper = new GallerySnapHelper();
snapHelper.attachToRecyclerView(recyclerView);
List<String> list=new ArrayList<>();
List<String> list = new ArrayList<>();
list.add(mActivity.getString(R.string.rv_order_for_payment));
list.add(mActivity.getString(R.string.rv_order_to_travel));
list.add(mActivity.getString(R.string.rv_order_have_travel));
......@@ -97,8 +99,8 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
menuAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
menuAdapter.setSelectItem(position);
mViewPager.setCurrentItem(position);
menuAdapter.setSelectItem(position);
mViewPager.setCurrentItem(position);
}
});
}
......@@ -106,8 +108,8 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
/**
* 初始化Viewpager
*/
private void initViewpager(){
mAdapter=new TabAdapter(getSupportFragmentManager(),getListFragment());
private void initViewpager() {
mAdapter = new TabAdapter(getSupportFragmentManager(), getListFragment());
mViewPager.setAdapter(mAdapter);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
......@@ -133,7 +135,7 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
private List<BaseFragment> getListFragment() {
List<BaseFragment> list = new ArrayList<>();
list.add(ForPaymentFragment.getInstance(TYPE_FOR_PAYMENT));
list.add(ForPaymentFragment.getInstance(TYPE_FOR_PAYMENT, switchListener));
list.add(ToTravelFragment.getInstance(TYPE_TO_TRAVEL));
list.add(HaveToTravelFragment.getInstance(TYPE_HAVE_TO_TRAVEL));
list.add(CompletedFragment.getInstance(TYPE_COMPLETED));
......@@ -147,4 +149,20 @@ public class OrderListActivity extends BaseStatusActivity<PickerPresenter> {
mAdapter.getCurrentFragment().onActivityResult(requestCode, resultCode, data);
}
public SwitchListener switchListener = new SwitchListener() {
@Override
public void switchTab(int position) {
if (menuAdapter != null && mViewPager != null) {
menuAdapter.setSelectItem(position);
mViewPager.setCurrentItem(position);
}
}
};
/******
* 切换事件
*/
public interface SwitchListener {
void switchTab(int position);
}
}
......@@ -47,6 +47,7 @@ import java.util.Map;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
......@@ -104,9 +105,13 @@ public class MemberCenterActivity extends BaseStatusActivity<MemberPresenter> {
initRxBus();
}
private Disposable disposableSuc;
private Disposable disposableFail;
@SuppressLint("CheckResult")
private void initRxBus() {
RxBus.tObservable(PaymentSuccessfulEvent.class)
disposableSuc = RxBus.tObservable(PaymentSuccessfulEvent.class)
.observeOn(Schedulers.io())
.subscribe(new Consumer<PaymentSuccessfulEvent>() {
@Override
......@@ -115,18 +120,31 @@ public class MemberCenterActivity extends BaseStatusActivity<MemberPresenter> {
}
});
RxBus.tObservable(PaymentFailedEvent.class)
disposableFail = RxBus.tObservable(PaymentFailedEvent.class)
.observeOn(Schedulers.newThread())
.subscribe(new Consumer<PaymentFailedEvent>() {
@Override
public void accept(PaymentFailedEvent payEvent) throws Exception {
if (mActivity.getClass().equals(MemberCenterActivity.class)) {
Log.e("xxxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxxxxx");
ARouter.getInstance().build(Constance.ACTIVITY_URL_ORDERLIST).navigation();
finish();
}
}
});
Log.e("xxxxxxxxxxxxxx", disposableSuc == disposableFail ? "true" : "false");
}
@Override
public void onDestroy() {
super.onDestroy();
if (disposableSuc != null && !disposableSuc.isDisposed()) {
disposableSuc.dispose();
}
if (disposableFail != null && !disposableFail.isDisposed()) {
disposableFail.dispose();
}
}
@Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment