效果图:
项目要求:
1.项目框架:MVP,图片加载用Fresco,网络请求用OKhttp+Retrofit实现(自己封装,加单例模式),
2.完成购物车数据添加(如果接口无数据,可用接口工具添加数据),
3.自定义view实现加减按钮,每次点击加减,item中的总数及总价要做出相应的改变。
4.当数量为1时,点击减号,数量不变,吐司提示用户最小数量为1。
5.底部总数及总价为所有item项中的总价及总数,每个item中数量价格的更改,底部总价总数要与之联动
6.实现单选反选全选功能,首次进入默认全选,item未选中时总数及总价不计入底部数据,改变选中状态时,底部总数及总价能做出正确修改
7.点击删除按钮,删除item,底部总数及总价能做出正确修改,接口数据删除。
接口如下:
添加购物车
接口地址:http://120.27.23.105/product/addCart
返回格式:json
请求方式:get/post
接口备注:添加购物车(删除sellerid字段)
请求参数说明:
名称类型 必填 说明
uid string 是 用户id
pid string 是 商品id
查询购物车
接口地址:http://120.27.23.105/product/getCarts
返回格式:json
请求方式:get/post
接口备注:查询购物车
请求参数说明:
名称类型 必填 说明
uid string 是 用户id
更新购物车
接口地址:http://120.27.23.105/product/updateCarts?uid=71&sellerid=1&pid=1&selected=0&num=10
返回格式:json
请求方式:get/post
接口备注:更新购物车
请求参数说明:
名称类型 必填 说明
uid string 是 用户id
sellerid string 是商户id
pid string 是 商品id
num string 是 商品数量
selected string 是是否选中
删除购物车
接口地址:http://120.27.23.105/product/deleteCart?uid=72&pid=1
返回格式:json
请求方式:get/post
接口备注:删除购物车
请求参数说明:
名称类型 必填 说明
uid string 是 用户id
pid string 是 商品id
本项目所需依赖:
//retrofit
compile 'com.squareup.retrofit2:retrofit:+'
compile 'com.squareup.retrofit2:converter-gson:+'
//Rxjava2
compile 'io.reactivex.rxjava2:rxjava:+'
compile 'io.reactivex.rxjava2:rxandroid:+'
//让retrofit支持Rxjava2
compile 'com.squareup.retrofit2:adapter-rxjava2:+'
//butterknife
compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
//fresco
compile 'com.facebook.fresco:fresco:+'
//支持gif
compile 'com.facebook.fresco:animated-gif:+'
//eventbus
compile 'org.greenrobot:eventbus:3.0.0'
本项目所需权限:
<uses-permission android:name="android.permission.INTERNET" />
本项目所需素材如下:
项目结构如下:
代码(由上到下):
adapter:
MessageEvent
package com.bwie.myapplication.adapter;
public class MessageEvent {
private boolean checkd;
public boolean isCheckd() {
return checkd;
}
public void setCheckd(boolean checkd) {
this.checkd = checkd;
}
}
MyCarShowAdapter
package com.bwie.myapplication.adapter;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.net.Uri;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bwie.myapplication.R;
import com.bwie.myapplication.bean.DeleteGoodsBean;
import com.bwie.myapplication.bean.ShoppingcarBean;
import com.bwie.myapplication.bean.UpdateGoodsBean;
import com.bwie.myapplication.presenter.DeleteGoodsPresenter;
import com.bwie.myapplication.presenter.UpdateGoodsPresenter;
import com.bwie.myapplication.view.IDeleteGoodsView;
import com.bwie.myapplication.view.IUpdateGoodsView;
import com.facebook.drawee.backends.pipeline.Fresco;
import com.facebook.drawee.view.SimpleDraweeView;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
public class MyCarShowAdapter extends BaseExpandableListAdapter implements IDeleteGoodsView, IUpdateGoodsView {
private Context context;
private List<ShoppingcarBean.DataBean> data;
private List<List<ShoppingcarBean.DataBean.ListBean>> list;
private DeleteGoodsPresenter deleteGoodsPresenter;
private boolean isVisible;
private SharedPreferences myself;
private String uid;
private UpdateGoodsPresenter updateGoodsPresenter;
public MyCarShowAdapter(Context context, List<ShoppingcarBean.DataBean> data, List<List<ShoppingcarBean.DataBean.ListBean>> list) {
this.cont