ReduceAdapter.java 8.56 KB
package com.naji.xiaotao.cookbook.adapter;

import android.annotation.SuppressLint;
import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.naji.xiaotao.R;
import com.naji.xiaotao.cookbook.bean.ReduceBean;
import com.naji.xiaotao.cookbook.bean.ResultEntity;
import com.naji.xiaotao.cookbook.dialog.ReduceFragmentDialog;
import com.naji.xiaotao.cookbook.listener.RvListener;
import com.naji.xiaotao.cookbook.service.CookbookApiService;
import com.naji.xiaotao.cookbook.viewholder.RvHolder;
import com.naji.xiaotao.http.RetrofitClient;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import me.goldze.mvvmhabit.bus.RxBus;
import me.goldze.mvvmhabit.http.BaseResponse;
import me.goldze.mvvmhabit.http.ResponseThrowable;
import me.goldze.mvvmhabit.utils.RxUtils;
import me.goldze.mvvmhabit.utils.SPUtils;
import me.goldze.mvvmhabit.utils.ToastUtils;

public class ReduceAdapter extends RvAdapter<ReduceBean>{

    private ReduceFragmentDialog.ReduceListener reduceListener;
    private int  position;
    private String fromSource;
    private String clear_num;//菜品沽清数量

    public ReduceAdapter(Context context, List<ReduceBean> list, ReduceFragmentDialog.ReduceListener reduceListener,int position,String fromSource,String clear_num){
        super(context,list,null);
        this.reduceListener=reduceListener;
        this.position=position;
        this.fromSource=fromSource;
        this.clear_num=clear_num;
    }

    @Override
    protected int getLayoutId(int viewType) {
        return R.layout.dialog_reduce_item;
    }

    @Override
    protected RvHolder getHolder(View view, int viewType) {
        return new ReduceHolder(view,viewType,null);
    }

    public class ReduceHolder extends RvHolder<ReduceBean>{

        private TextView cookbookTv;
        private ImageView addBn;
        private TextView countTv;
        private ImageView reduceBn;

        public ReduceHolder(View itemView, int type, RvListener rvListener){
            super(itemView,type,rvListener);
            cookbookTv=itemView.findViewById(R.id.cookbook);
            addBn=itemView.findViewById(R.id.add);
            countTv=itemView.findViewById(R.id.count);
            reduceBn=itemView.findViewById(R.id.reduce);
        }

        @Override
        public void bindHolder(final ReduceBean reduceBean, final int position) {
            if(!TextUtils.isEmpty(reduceBean.getPtitle())&&!TextUtils.isEmpty(reduceBean.getTitle())){
                cookbookTv.setText(reduceBean.getTitle()+","+reduceBean.getPtitle());
            }else if(!TextUtils.isEmpty(reduceBean.getTitle())){
                cookbookTv.setText(reduceBean.getTitle());
            }else if(!TextUtils.isEmpty(reduceBean.getPtitle())){
                cookbookTv.setText(reduceBean.getPtitle());
            }
            countTv.setText(reduceBean.getFoodNum());
            addBn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if(!TextUtils.isEmpty(clear_num)&&Integer.parseInt(list.get(position).getFoodNum())==Integer.parseInt(clear_num)){
                        ToastUtils.showShort("菜品沽清不足");
                        return;
                    }
                    addCookToCart(countTv,position,reduceBean);
                }
            });
            reduceBn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    reduceCookFromCart(position,reduceBean);
                }
            });
        }
    }

    //添加菜品到购物车
    private void addCookToCart(final TextView countTv, final int pos, final ReduceBean bean){
        Map<String,String> params=new HashMap<>();
        params.put("orderid",bean.getOrderid());
        params.put("openid", SPUtils.getInstance("user_info").getString("openid"));
        params.put("cookbookid",bean.getCookbookid());
        params.put("identity","2");
        if(!TextUtils.isEmpty(bean.getSpecid())){
            params.put("specid",bean.getSpecid());
        }
        if(!TextUtils.isEmpty(bean.getPracticeid())){
            params.put("practiceid",bean.getPracticeid());
        }
        if(!TextUtils.isEmpty(fromSource)){
            params.put("fromSoucre",fromSource);
        }
        RetrofitClient.getInstance().create(CookbookApiService.class)
                .addCookToCart(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
                    @Override
                    public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
                        if(baseResponse.getRet()==200){
                            list.get(pos).setFoodNum((Integer.parseInt(list.get(pos).getFoodNum())+1)+"");
                            countTv.setText(list.get(pos).getFoodNum());
                            if(reduceListener!=null){
                                reduceListener.onAddSuccess(position,bean);
                            }
                            //通知CookbookMainActivity改变购物车数量
                            RxBus.getDefault().post(1);
                        }else{
                            ToastUtils.showShort(baseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable throwable) throws Exception {
                        ToastUtils.showShort(throwable.msg);
                        throwable.printStackTrace();
                    }
                });
    }
    //删减菜品从购物车esult")
    private void reduceCookFromCart(final int pos, final ReduceBean bean){
        Map<String,String> params=new HashMap<>();
        params.put("orderid",bean.getOrderid());
        params.put("cookbookid",bean.getCookbookid());
        params.put("identity","2");
        if(!TextUtils.isEmpty(bean.getSpecid())){
            params.put("specid",bean.getSpecid());
        }
        if(!TextUtils.isEmpty(bean.getPracticeid())){
            params.put("practiceid",bean.getPracticeid());
        }
        if(!TextUtils.isEmpty(fromSource)){
            params.put("fromSoucre",fromSource);
        }
        RetrofitClient.getInstance().create(CookbookApiService.class)
                .reduceCookFromCart(params)
                .compose(RxUtils.schedulersTransformer())
                .compose(RxUtils.exceptionTransformer())
                .doOnSubscribe(new Consumer<Disposable>() {
                    @Override
                    public void accept(Disposable disposable) throws Exception {

                    }
                })
                .subscribe(new Consumer<BaseResponse<List<ResultEntity>>>() {
                    @Override
                    public void accept(BaseResponse<List<ResultEntity>> baseResponse) throws Exception {
                        if(baseResponse.getRet()==200){
                            list.get(pos).setFoodNum((Integer.parseInt(list.get(pos).getFoodNum())-1)+"");
                            if(Integer.parseInt(list.get(pos).getFoodNum())==0){
                                list.remove(pos);
                                if(list.size()<=0){

                                }
                            }
                            notifyDataSetChanged();
                            if(reduceListener!=null){
                                reduceListener.onReduceSuccess(position,bean);
                            }
                            //通知CookbookMainActivity改变购物车数量
                            RxBus.getDefault().post(-1);
                        }else{
                            ToastUtils.showShort(baseResponse.getMsg());
                        }
                    }
                }, new Consumer<ResponseThrowable>() {
                    @Override
                    public void accept(ResponseThrowable throwable) throws Exception {
                        ToastUtils.showShort(throwable.msg);
                        throwable.printStackTrace();
                    }
                });
    }
}