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;
}
}