购物车

ShopCarService

public interface ShopCarService {
    @GET("order/verify/v1/findShoppingCart")
    Call<ShopCarBean> getShopCarData(@Header("userId") int userId, @Header("sessionId") String sessionId);
}

Adapter

package com.zjs.jingba.shopcar.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import com.squareup.picasso.Picasso;
import com.zjs.jingba.R;
import com.zjs.jingba.shopcar.bean.ShopCarBean;

import java.util.List;

public class ShopCarAdapter extends RecyclerView.Adapter {
    private Context context;
    private List<ShopCarBean.ResultBean> shopCarList;
    private OnShopItemClick onShopItemClick;
    public ShopCarAdapter(Context context, List<ShopCarBean.ResultBean> shopCarList) {
        this.context = context;
        this.shopCarList = shopCarList;
    }

    public ShopCarAdapter(OnShopItemClick onShopItemClick) {
        this.onShopItemClick = onShopItemClick;
    }

    public interface OnShopItemClick{
        void checkBoxClick(View view,int i);
        void subItemClick(View view,int position);
        void addItemClick(View view,int position);
    }

    public void setOnShopItemClick(OnShopItemClick onShopItemClick) {
        this.onShopItemClick = onShopItemClick;
    }

    class MyViewHolder extends RecyclerView.ViewHolder {
        private CheckBox cb_check;
        private ImageView img_shop_pic;
        private TextView tv_shop_name;
        private TextView tv_shop_price;
        private TextView tv_subnum;
        private TextView tv_num;
        private TextView tv_addnum;
        private final TextView tv_delShop;

        public MyViewHolder(@NonNull final View itemView) {
            super(itemView);
            cb_check = itemView.findViewById(R.id.cb_check);
            img_shop_pic = itemView.findViewById(R.id.img_shop_pic);
            tv_shop_name = itemView.findViewById(R.id.tv_shop_name);
            tv_shop_price = itemView.findViewById(R.id.tv_shop_price);
            tv_subnum = itemView.findViewById(R.id.tv_subnum);
            tv_num = itemView.findViewById(R.id.tv_num);
            tv_addnum = itemView.findViewById(R.id.tv_addnum);
            tv_delShop = itemView.findViewById(R.id.tv_delShop);

            //加减数量点击事件
            tv_subnum.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = getLayoutPosition();
                    onShopItemClick.subItemClick(view,position);
                }
            });
            tv_addnum.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = getLayoutPosition();
                    onShopItemClick.addItemClick(view,position);
                }
            });
            tv_delShop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = getLayoutPosition();
                    shopCarList.remove(position);
                    notifyDataSetChanged();
                }
            });
        }
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.shopcar_item, viewGroup, false);
        return new MyViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder,final int i) {
        MyViewHolder mViewHolder = (MyViewHolder) viewHolder;
        Picasso.with(context).load(shopCarList.get(i).getPic()).into(mViewHolder.img_shop_pic);
        mViewHolder.tv_shop_name.setText(shopCarList.get(i).getCommodityName());
        mViewHolder.tv_shop_price.setText("¥"+shopCarList.get(i).getPrice());
        mViewHolder.tv_num.setText(shopCarList.get(i).getCount()+"");
        int isCheck = shopCarList.get(i).getIsCheck();
        if(isCheck == 1){
            mViewHolder.cb_check.setChecked(true);
        }else {
            mViewHolder.cb_check.setChecked(false);
        }
        mViewHolder.cb_check.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onShopItemClick.checkBoxClick(view,i);
            }
        });
    }

    @Override
    public int getItemCount() {
        return shopCarList.size();
    }
}

view

public interface ShopCarView {
    void onShopCarShow(ShopCarBean shopCarBean);
    void onShopCarMessage(String msg);
}

model

package com.zjs.jingba.shopcar.mvp;

import com.zjs.jingba.shopcar.ShopCarService;
import com.zjs.jingba.shopcar.bean.ShopCarBean;
import com.zjs.jingba.util.OkRetrofitUtil;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class ShopCarModel {
    public void getShopCarData(int userId, String sessionId, final ShopCarCallBack shopCarCallBack){
        ShopCarService shopCarService = OkRetrofitUtil.retrofit.create(ShopCarService.class);
        Call<ShopCarBean> call = shopCarService.getShopCarData(userId, sessionId);
        call.enqueue(new Callback<ShopCarBean>() {
            @Override
            public void onResponse(Call<ShopCarBean> call, Response<ShopCarBean> response) {
                String status = response.body().getStatus();
                ShopCarBean shopCarBean = response.body();
                if (status.equals("0000")){
                    shopCarCallBack.onShopCarSuccess(shopCarBean);
                }else {
                    shopCarCallBack.onShopCarFailure(shopCarBean.getMessage()+"");
                }

            }

            @Override
            public void onFailure(Call<ShopCarBean> call, Throwable t) {

            }
        });
    }
}

presenter

package com.zjs.jingba.shopcar.mvp;

import com.zjs.jingba.shopcar.bean.ShopCarBean;

public class ShopCarPresenter {
    private ShopCarView shopCarView;
    private final ShopCarModel shopCarModel;

    public ShopCarPresenter(ShopCarView shopCarView) {
        this.shopCarView = shopCarView;
        shopCarModel = new ShopCarModel();
    }
    //获取购物车数据
    public void getShopCarData(int userId,String sessionId){
        shopCarModel.getShopCarData(userId, sessionId, new ShopCarCallBack() {
            @Override
            public void onShopCarSuccess(ShopCarBean shopCarBean) {
                shopCarView.onShopCarShow(shopCarBean);
            }

            @Override
            public void onShopCarFailure(String msg) {
                shopCarView.onShopCarMessage(msg);
            }
        });
    }
}

okhttp

package com.zjs.jingba.util;

import com.google.gson.Gson;
import com.zjs.jingba.myclass.BaseRequest;
import com.zjs.jingba.util.interceptor.OKHeaderInterceptor;
import com.zjs.jingba.util.interceptor.OkLogInterceptor;

import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;

public class OkHttpUtil {
    private static Gson gson = new Gson();
    private static final String MEDIA_TYPE = "application/json; charset=utf-8";
    private static final String METHOD_GET = "GET";
    private static final String METHOD_POST = "POST";
    private static final String METHOD_PUT = "PUT";
    private static final String METHOD_DELETE = "DELETE";

    private static OkHttpClient okHttpClient;

    //私有构造
    private OkHttpUtil() {
    }

    //初始化init方法
    public static void init(Map hearts) {
        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.readTimeout(3000, TimeUnit.MILLISECONDS);
        builder.writeTimeout(3000, TimeUnit.MILLISECONDS);
        builder.connectTimeout(3000, TimeUnit.MILLISECONDS);
        builder.addInterceptor(new OKHeaderInterceptor(hearts));
        builder.addInterceptor(new OkLogInterceptor());
        okHttpClient = builder.build();
    }

    //创建request对象
    private static Request createRequest(String url, String method, BaseRequest baseRequest) {
        RequestBody requestBody = null;
        if (baseRequest != null) {
            String bodyJson = gson.toJson(baseRequest);
            MediaType JSON = MediaType.parse(MEDIA_TYPE);
            requestBody = RequestBody.create(JSON, bodyJson);
        }
        Request.Builder builder = new Request.Builder().url(url);

        Request request = null;
        switch (method) {
            case METHOD_GET:
                request = builder.build();
                break;
            case METHOD_POST:
                request = builder.post(requestBody).build();
                break;
            case METHOD_PUT:
                if (requestBody != null) {
                    request = builder.put(requestBody).build();
                }
                break;
            case METHOD_DELETE:
                if (requestBody != null) {
                    request = builder.delete(requestBody).build();
                } else {
                    request = builder.delete().build();
                }
                break;

        }
        return request;
    }

    /**
     * 异步get方法 * * @param url * @param callback
     */
    public static void enqueueGet(String url, Callback callback) {
        Request request = createRequest(url, METHOD_GET, (BaseRequest) null);
        Call call = okHttpClient.newCall(request);
        call.enqueue(callback);
    }

    /**
     * 异步post方法 * * @param url * @param baseRequest * @param callback
     */
    public static void enqueuePost(String url, BaseRequest baseRequest, Callback callback) {
        Request request = createRequest(url, METHOD_POST, baseRequest);
        Call call = okHttpClient.newCall(request);
        call.enqueue(callback);
    }

    /**
     * 异步post方法 map传参
     * @param url
     * @param baseRequest
     * @param callback
     */
    public static void enqueuePost(String url, Map baseRequest, Callback callback) {
        Request request = createRequest(url, METHOD_POST, baseRequest);
        Call call = okHttpClient.newCall(request);
        call.enqueue(callback);
    }

    private static Request createRequest(String url, String method, Map baseRequest) {
        FormBody requestBody = null;
        if (baseRequest != null) {
            FormBody.Builder formBuilder = new FormBody.Builder();
            Set set = baseRequest.keySet();
            Iterator iterator = set.iterator();
            while ((iterator.hasNext())){
                String key = (String) iterator.next();
                String value = (String) baseRequest.get(key);
                formBuilder.add(key,value);
            }
            requestBody = formBuilder.build();
        }
        Request.Builder builder = new Request.Builder().url(url);

        Request request = null;
        switch (method) {
            case METHOD_GET:
                request = builder.build();
                break;
            case METHOD_POST:
                request = builder.post(requestBody).build();
                break;
            case METHOD_PUT:
                if (requestBody != null) {
                    request = builder.put(requestBody).build();
                }
                break;
            case METHOD_DELETE:
                if (requestBody != null) {
                    request = builder.delete(requestBody).build();
                } else {
                    request = builder.delete().build();
                }
                break;

        }
        return request;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值