您的位置:首页 > 理论基础 > 计算机网络

MVP+Fresco+OKhttp+Retrofit实现购物车

2018-01-07 19:28 465 查看
所需依赖:

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.facebook.fresco:fresco:1.5.0'
compile 'org.greenrobot:eventbus:3.1.1'
compile 'com.scwang.smartrefresh:SmartRefreshLayout:1.0.4-4'
compile 'com.dou361.ijkplayer:jjdxm-ijkplayer:1.0.6'

main布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.bwie.week02zhoukao.MainActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#f70828">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="《"
android:textSize="26sp"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:id="@+id/fan" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="购物车"
android:layout_centerInParent="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="编辑"
android:id="@+id/bj"
android:layout_centerInParent="true"
android:layout_alignParentRight="true"
android:layout_marginRight="10dp" />
</RelativeLayout>

<ExpandableListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/elv"
android:layout_weight="2"></ExpandableListView>

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="8">

<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="全选"
android:id="@+id/check_all"
android:layout_centerVertical="true" />

<LinearLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:orientation="horizontal"
android:id="@+id/caozuo">

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/share"
android:background="#ed1ad8"
android:textColor="#ffffff"
android:text="分享宝贝"
android:layout_margin="5dp" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/file"
android:background="#ed1ad8"
android:textColor="#ffffff"
android:text="移到收藏栏"
android:layout_margin="5dp"

/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/dele"
android:background="#f40616"
android:textColor="#ffffff"
android:text="删除"
android:layout_margin="5dp" />
</LinearLayout>

<RelativeLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:id="@+id/jiesuan"
android:layout_centerVertical="true">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price_all"
android:layout_marginLeft="100dp"
android:text="价钱"
android:layout_centerVertical="true"

/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/js"
android:text="结算"
android:layout_margin="5dp"
android:background="#f40820"
android:textColor="#ffffff"
android:layout_alignParentRight="true" />
</RelativeLayout>

</RelativeLayout>

</LinearLayout>

child布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/sel"
android:layout_gravity="center_vertical"
/>
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="150dp"
android:layout_height="150dp"
android:id="@+id/img"
/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"

>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/show"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/name"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/jie_shao"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/price"
android:textColor="#edb519"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/prices"
android:layout_marginLeft="20dp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/num"
android:layout_marginLeft="20dp"
/>

</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/hide"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerVertical="true"
>
<TextView
android:layout_width="20dp"
android:layout_height="20dp"
android:id="@+id/end"
android:text="-"
android:background="#bac2ec"
android:gravity="center"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/num01"
android:text="111"
/>
<TextView
android:layout_width="20dp"
android:layout_height="20dp"
android:id="@+id/add"
android:text="+"
android:gravity="center"
android:background="#bac2ec"
/>
</LinearLayout>

<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:id="@+id/del"
android:background="#f70d24"
android:layout_alignParentRight="true"
android:text="删除"
android:textColor="#ffffff"
/>
</RelativeLayout>
</RelativeLayout>

</LinearLayout>

group布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/shop_name"
android:layout_centerVertical="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/item_bj"
android:text="编辑"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
/>
</RelativeLayout>

HttpUtils

public class HttpUtils {
public static final String BASE_URL="https://www.zhaoapi.cn/";
//查询购物车
public static final String SELECTCAR_PATH_URL = "product/getCarts";
//删除购物车(新增)
public static final String DELETECAR_PATH_URL = "product/deleteCart";
}


MyInterceptor

public class MyInterceptor implements Interceptor {
private String newUri;

@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
URI uri = request.url().uri();
String query = uri.getQuery();
String host = uri.getHost();
String path = uri.getPath();
if (query == null){
newUri = "https://"+host + path +"?source=android";
}else {
newUri = "https://"+host + path +"?"+query+"&source=android";
}
Request request1 = request.newBuilder().url(newUri).build();
Response response = chain.proceed(request1);

return response;
}
}


OnLisenter

public interface OnListiner<T> {
public void onSuccess(T t);

public void onFailure(Throwable throwable);
}


RetorFitHelper

public class RetrofitHelper {
private static OkHttpClient client;
private static ServerApi api;

static {
initOkHttp();
}

private static void initOkHttp() {
if (client == null) {
synchronized (OkHttpClient.class) {
if (client == null) {
client = new OkHttpClient.Builder()
.addInterceptor(new MyInterceptor())
.build();
}
}
}
}
public static ServerApi getApi(){
if (api == null){
synchronized (ServerApi.class){
if (api==null){
api = RetrofitHelper.create(ServerApi.class, HttpUtils.BASE_URL);
}
}
}
return api;
}

private static <T> T create(Class<T> tClass, String baseUrl) {
Retrofit re = new Retrofit.Builder()
.client(client)
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return re.create(tClass);
}
}


SerVerApi

public interface ServerApi {
//查询购物车
@GET(HttpUtils.SELECTCAR_PATH_URL)
public Flowable<CartBean> getCart(@Query("uid") String uid);

//删除购物车
@GET(HttpUtils.DELETECAR_PATH_URL)
Observable<BaseBean> deleteGoodCar(@Query("uid") String uid, @Query("pid") String pid);
}

M层

public class BaseModel implements IBaseModel {
@Override
public void getCard(String uid, final OnListiner onListiner) {
Flowable<CartBean> cart = RetrofitHelper.getApi().getCart(uid);
cart.doOnSubscribe(new Consumer<Subscription>() {
@Override
public void accept(Subscription subscription) throws Exception {

}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<CartBean>() {
@Override
public void accept(CartBean cartBean) throws Exception {
onListiner.onSuccess(cartBean);
}
})  ;
}
}

M层接口

public interface IBaseModel {
public void getCard(String uid, OnListiner onListiner);
}

P层

public class BasePresenter {
private IMainActivity iMainActivity;
private IBaseModel iBaseModel;

public BasePresenter(IMainActivity iMainActivity) {
this.iMainActivity = iMainActivity;
iBaseModel = new BaseModel();
}
public void getCarts(){
iBaseModel.getCard("71", new OnListiner() {
@Override
public void onSuccess(Object o) {
iMainActivity.onShow((CartBean) o);
}

@Override
public void onFailure(Throwable throwable) {
throwable.getMessage();
}
});
}
}

public interface IMainActivity {
public void onShow(CartBean cartBean);
}

public class MainActivity extends AppCompatActivity implements View.OnClickListener, IMainActivity {

/**
* 《
*/
private TextView mFan;
/**
* 编辑
*/
private TextView mBj;
private ExpandableListView mElv;
/**
* 全选
*/
private CheckBox mCheckAll;
/**
* 分享宝贝
*/
private Button mShare;
/**
* 移到收藏栏
*/
private Button mFile;
/**
* 删除
*/
private Button mDele;
private LinearLayout mCaozuo;
/**
* 价钱
*/
private TextView mPriceAll;
/**
* 结算
*/
private Button mJs;
private RelativeLayout mJiesuan;
private BasePresenter presenter;
private MyAdapter adapter;

private List<List<CartBean.DataBean.ListBean>> lists = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
EventBus.getDefault().register(this);
presenter = new BasePresenter(this);
presenter.getCarts();
mCaozuo.setVisibility(View.GONE);
}

private void initView() {
mFan = (TextView) findViewById(R.id.fan);
mBj = (TextView) findViewById(R.id.bj);
mElv = (ExpandableListView) findViewById(R.id.elv);
mCheckAll = (CheckBox) findViewById(R.id.check_all);
mShare = (Button) findViewById(R.id.share);
mShare.setOnClickListener(this);
mFile = (Button) findViewById(R.id.file);
mFile.setOnClickListener(this);
mDele = (Button) findViewById(R.id.dele);
mDele.setOnClickListener(this);
mCaozuo = (LinearLayout) findViewById(R.id.caozuo);
mPriceAll = (TextView) findViewById(R.id.price_all);
mJs = (Button) findViewById(R.id.js);
mJs.setOnClickListener(this);
mJiesuan = (RelativeLayout) findViewById(R.id.jiesuan);
mCheckAll.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.changeAllListCbState(mCheckAll.isChecked());
}
});
}

@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
case R.id.share:
break;
case R.id.file:
break;
case R.id.dele:
break;
case R.id.js:
break;
}
}

@Override
public void onShow(CartBean cartBean) {
Toast.makeText(getApplicationContext(), cartBean.getCode(), Toast.LENGTH_SHORT).show();
List<CartBean.DataBean> data = cartBean.getData();

for (int i = 0; i < data.size(); i++) {
data.get(i).setBj("编辑");
data.get(i).setWc("完成");
List<CartBean.DataBean.ListBean> list = data.get(i).getList();
lists.add(list);
}
adapter = new MyAdapter(this, data, lists);
mElv.setAdapter(adapter);
for (int i = 0; i < data.size(); i++) {
mElv.expandGroup(i);
}
}

@Subscribe
public void onMessageEvent(MessageEvent event) {
mCheckAll.setChecked(event.isChecked());
}

@Subscribe
public void onMessageEvent(PriceAndCountEvent event) {
mPriceAll.setText("结算(" + event.getCount() + ")" + event.getPrice() + "");
}

@Override
public void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
}

适配器

public class MyAdapter extends BaseExpandableListAdapter {
private Context context;
private List<CartBean.DataBean> groupList;
private List<List<CartBean.DataBean.ListBean>> childList;
private LayoutInflater inflater;

private AlertDialog show;
private Boolean i01 = false;

public MyAdapter(Context context, List<CartBean.DataBean> groupList, List<List<CartBean.DataBean.ListBean>> childList) {
this.context = context;
this.groupList = groupList;
this.childList = childList;
inflater = LayoutInflater.from(context);
}

@Override
public int getGroupCount() {
return groupList.size();
}

@Override
public int getChildrenCount(int groupPosition) {
return childList.get(groupPosition).size();
}

@Override
public Object getGroup(int groupPosition) {
return groupList.get(groupPosition);
}

@Override
public Object getChild(int groupPosition, int childPosition) {
return childList.get(groupPosition).get(childPosition);
}

@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}

@Override
public boolean hasStableIds() {
return false;
}

@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
final GroupViewHolder holder1;
View view = null;
if(convertView == null)
{
holder1 = new GroupViewHolder();
view = inflater.inflate(R.layout.group_item, parent, false);
holder1.shopName = view.findViewById(R.id.shop_name);
holder1.itemBj = view.findViewById(R.id.item_bj);
view.setTag(holder1);
}else {
view = convertView;
holder1 = (GroupViewHolder) view.getTag();
}
final CartBean.DataBean dataBean = groupList.get(groupPosition);
holder1.shopName.setText(dataBean.getSellerName());
Boolean check = dataBean.getCheck();
holder1.shopName.setChecked(dataBean.getCheck());
holder1.itemBj.setText(dataBean.getBj());

holder1.itemBj.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//  List<CartBean.DataBean.ListBean> listBeans = childList.get(groupPosition);
List<CartBean.DataBean.ListBean> list = dataBean.getList();
if(i01==false)
{   i01=true;
dataBean.setBj("完成");
for(int i = 0;i<list.size();i++)
{
list.get(i).setShow(false);

}
notifyDataSetChanged();
}
else {
i01=false;
dataBean.setBj("编辑");
for(int i = 0;i<list.size();i++)
{
list.get(i).setShow(true);

}
notifyDataSetChanged();
}

notifyDataSetChanged();
}
});
holder1.shopName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dataBean.setCheck(holder1.shopName.isChecked());
changeChildCbState(groupPosition, holder1.shopName.isChecked());
EventBus.getDefault().post(compute());
changeAllCbState(isAllGroupCbSelected());
notifyDataSetChanged();
}
});

return view;
}

@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final ChildViewHolder holder;
View view = null;
if(convertView == null)
{
holder = new ChildViewHolder();
view = inflater.inflate(R.layout.child_item, parent, false);
holder.dele = view.findViewById(R.id.del);
holder.add = view.findViewById(R.id.add);
holder.end = view.findViewById(R.id.end);
holder.sel = view.findViewById(R.id.sel);
holder.img = view.findViewById(R.id.img);
holder.name = view.findViewById(R.id.name);
holder.price = view.findViewById(R.id.price);
holder.prices = view.findViewById(R.id.prices);
holder.jieShao = view.findViewById(R.id.jie_shao);
holder.num = view.findViewById(R.id.num);
holder.show = view.findViewById(R.id.show);
holder.hide = view.findViewById(R.id.hide);
holder.num01 = view.findViewById(R.id.num01);
view.setTag(holder);
}
else {
view = convertView;
holder = (ChildViewHolder) view.getTag();
}
final CartBean.DataBean.ListBean listBean = childList.get(groupPosition).get(childPosition);
holder.hide.setVisibility(View.GONE);
holder.jieShao.setText(listBean.getSubhead());
holder.num.setText("数量:"+listBean.getNum());
holder.num01.setText(listBean.getNum()+"");
holder.price.setText("$"+listBean.getPrice());
holder.prices.setText("$"+listBean.getBargainPrice());
holder.sel.setChecked(listBean.getCheck());
String images = listBean.getImages();
String[] split = images.split("\\|");
Uri parse = Uri.parse(split[0]);
holder.img.setImageURI(parse);
holder.name.setText(listBean.getTitle());
int pid = listBean.getPid();
final String pid01  = pid+"";
final int selected = listBean.getSelected();
final String sellerid = listBean.getSellerid()+"";
final String num = listBean.getNum()+"";
if(listBean.getShow()==false)
{
holder.hide.setVisibility(View.VISIBLE);
holder.show.setVisibility(View.GONE);
}
else{
holder.hide.setVisibility(View.GONE);
holder.show.setVisibility(View.VISIBLE);
}
holder.sel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//设置该条目对象里的checked属性值
listBean.setCheck(holder.sel.isChecked());
PriceAndCountEvent priceAndCountEvent = compute();
EventBus.getDefault().post(priceAndCountEvent);

if (holder.sel.isChecked()) {
//当前checkbox是选中状态
if (isAllChildCbSelected(groupPosition)) {
changGroupCbState(groupPosition, true);
changeAllCbState(isAllGroupCbSelected());
}
} else {
changGroupCbState(groupPosition, false);
changeAllCbState(isAllGroupCbSelected());
}
notifyDataSetChanged();
}
});
//加号
holder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num1 = listBean.getNum();
num1++;
holder.num01.setText(num1 + "");
holder.num.setText(num1+"");
listBean.setNum(num1);
if (holder.sel.isChecked()) {
PriceAndCountEvent priceAndCountEvent = compute();
EventBus.getDefault().post(priceAndCountEvent);
}
}
});
//减号
holder.end.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int num = listBean.getNum();
if (num == 1) {
Toast.makeText(context,"最小值为1",Toast.LENGTH_SHORT).show();
return;
}
holder.num01.setText(--num + "");
holder.num.setText(num+"");
listBean.setNum(num);
if (holder.sel.isChecked()) {
PriceAndCountEvent priceAndCountEvent = compute();
EventBus.getDefault().post(priceAndCountEvent);
}
}
});
//删除
holder.dele.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

final AlertDialog.Builder normalDialog =
new AlertDialog.Builder(context);
normalDialog.setIcon(R.drawable.selectheart);
normalDialog.setTitle("确认要删除此商品吗");
normalDialog.setPositiveButton("确定",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//...To-do
RetrofitHelper.getApi().deleteGoodCar("71", childList.get(groupPosition).get(childPosition).getPid() + "")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseBean>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(BaseBean baseBean) {
if (baseBean.getCode().equals("0")){
List<CartBean.DataBean.ListBean> datasBeen = childList.get(groupPosition);
CartBean.DataBean.ListBean remove = datasBeen.remove(childPosition);
if (datasBeen.size() == 0) {
childList.remove(groupPosition);
groupList.remove(groupPosition);
}
EventBus.getDefault().post(compute());
notifyDataSetChanged();
}else{
Toast.makeText(context,"删除失败",Toast.LENGTH_SHORT).show();
}
}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
});

}
});
normalDialog.setNegativeButton("关闭",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//...To-do
show.dismiss();
}
});
// 显示
show = normalDialog.show();

}
});
notifyDataSetChanged();
return view;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}

class GroupViewHolder {
CheckBox shopName;
TextView itemBj;

}

class ChildViewHolder {
CheckBox sel;
SimpleDraweeView img;
TextView name;
TextView jieShao;
TextView price;
TextView prices;
TextView num;
TextView num01;
Button dele;
TextView add;
TextView end;
LinearLayout show;
RelativeLayout hide;
}
/**
* 计算列表中,选中的钱和数量
*/
private PriceAndCountEvent compute() {
int count = 0;
int price = 0;
for (int i = 0; i < childList.size(); i++) {
List<CartBean.DataBean.ListBean> listBeans = childList.get(i);
for (int j = 0; j < listBeans.size(); j++) {
CartBean.DataBean.ListBean listBean = listBeans.get(j);
if (listBean.getCheck()) {
price += listBean.getNum() * listBean.getPrice();
count += listBean.getNum();
}
}
}
PriceAndCountEvent priceAndCountEvent = new PriceAndCountEvent();
priceAndCountEvent.setCount(count);
priceAndCountEvent.setPrice(price);
return priceAndCountEvent;
}
/**
* 设置全选、反选
*
* @param flag
*/
public void changeAllListCbState(boolean flag) {
for (int i = 0; i < groupList.size(); i++) {
changGroupCbState(i, flag);
changeChildCbState(i, flag);
}
EventBus.getDefault().post(compute());
notifyDataSetChanged();
}
/**
* 判断一级列表是否全部选中
*
* @return
*/
private boolean isAllGroupCbSelected() {
for (int i = 0; i < groupList.size(); i++) {
CartBean.DataBean dataBean = groupList.get(i);
if (!dataBean.getCheck()) {
return false;
}
}
return true;
}

/**
* 判断二级列表是否全部选中
*
* @param groupPosition
* @return
*/
private boolean isAllChildCbSelected(int groupPosition) {
List<CartBean.DataBean.ListBean> listBeans = childList.get(groupPosition);
for (int i = 0; i < listBeans.size(); i++) {
CartBean.DataBean.ListBean listBean = listBeans.get(i);
if (!listBean.getCheck()) {
return false;
}
}
return true;
}
/**
* 改变全选的状态
*
* @param flag
*/
private void changeAllCbState(boolean flag) {
MessageEvent messageEvent = new MessageEvent();
messageEvent.setChecked(flag);
EventBus.getDefault().post(messageEvent);
}

/**
* 改变一级列表checkbox状态
*
* @param groupPosition
*/
private void changGroupCbState(int groupPosition, boolean flag) {
CartBean.DataBean dataBean = groupList.get(groupPosition);
dataBean.setCheck(flag);
}

/**
* 改变二级列表checkbox状态
*
* @param groupPosition
* @param flag
*/
private void changeChildCbState(int groupPosition, boolean flag) {
List<CartBean.DataBean.ListBean> listBeans = childList.get(groupPosition);
for (int i = 0; i < listBeans.size(); i++) {
CartBean.DataBean.ListBean listBean = listBeans.get(i);
listBean.setCheck(flag);
}
}
}

Bean类

public class BaseBean {

/**
* msg : 删除购物车成功
* code : 0
*/

private String msg;
private String code;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}
}

public class CartBean {

/**
* msg : 请求成功
* code : 0
* data : [{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":7,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家17","sellerid":"17"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":1,"pid":2,"price":299,"pscid":1,"selected":0,"sellerid":18,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家18","sellerid":"18"},{"list":[{"bargainPrice":111.99,"createtime":"2017-10-03T23:53:28","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":1,"pid":3,"price":198,"pscid":1,"selected":0,"sellerid":19,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}],"sellerName":"商家19","sellerid":"19"}]
*/

private String msg;
private String code;
private List<DataBean> data;

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public String getCode() {
return code;
}

public void setCode(String code) {
this.code = code;
}

public List<DataBean> getData() {
return data;
}

public void setData(List<DataBean> data) {
this.data = data;
}

public static class DataBean {
/**
* list : [{"bargainPrice":111.99,"createtime":"2017-10-14T21:39:05","detailUrl":"https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends","images":"https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg","num":7,"pid":1,"price":118,"pscid":1,"selected":0,"sellerid":17,"subhead":"每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下","title":"北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g"}]
* sellerName : 商家17
* sellerid : 17
*/

private String sellerName;
private String sellerid;
private List<ListBean> list;
private String bj="编辑01";
private Boolean check = false;
private String wc="完成";

public String getWc() {

return wc;
}

public void setWc(String wc) {
this.wc = wc;
}

public Boolean getCheck() {
return check;
}

public void setCheck(Boolean check) {
this.check = check;
}

public String getBj() {
return bj;
}

public void setBj(String bj) {
this.bj = bj;
}
public String getSellerName() {
return sellerName;
}

public void setSellerName(String sellerName) {
this.sellerName = sellerName;
}

public String getSellerid() {
return sellerid;
}

public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}

public List<ListBean> getList() {
return list;
}

public void setList(List<ListBean> list) {
this.list = list;
}

public static class ListBean {
/**
* bargainPrice : 111.99
* createtime : 2017-10-14T21:39:05
* detailUrl : https://item.m.jd.com/product/4719303.html?utm_source=androidapp&utm_medium=appshare&utm_campaign=t_335139774&utm_term=QQfriends * images : https://m.360buyimg.com/n0/jfs/t9004/210/1160833155/647627/ad6be059/59b4f4e1N9a2b1532.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7504/338/63721388/491286/f5957f53/598e95f1N7f2adb87.jpg!q70.jpg|https://m.360buyimg.com/n0/jfs/t7441/10/64242474/419246/adb30a7d/598e95fbNd989ba0a.jpg!q70.jpg * num : 7
* pid : 1
* price : 118.0
* pscid : 1
* selected : 0
* sellerid : 17
* subhead : 每个中秋都不能简单,无论身在何处,你总需要一块饼让生活更圆满,京东月饼让爱更圆满京东自营,闪电配送,更多惊喜,快用手指戳一下
* title : 北京稻香村 稻香村中秋节月饼 老北京月饼礼盒655g
*/

private double bargainPrice;
private String createtime;
private String detailUrl;
private String images;
private int num;
private int pid;
private double price;
private int pscid;
private int selected;
private int sellerid;
private String subhead;
private String title;
private Boolean isShow=true;
private Boolean check = false;

public Boolean getCheck() {
return check;
}

public void setCheck(Boolean check) {
this.check = check;
}

public Boolean getShow() {
return isShow;
}

public void setShow(Boolean show) {
isShow = show;
}

public double getBargainPrice() {
return bargainPrice;
}

public void setBargainPrice(double bargainPrice) {
this.bargainPrice = bargainPrice;
}

public String getCreatetime() {
return createtime;
}

public void setCreatetime(String createtime) {
this.createtime = createtime;
}

public String getDetailUrl() {
return detailUrl;
}

public void setDetailUrl(String detailUrl) {
this.detailUrl = detailUrl;
}

public String getImages() {
return images;
}

public void setImages(String images) {
this.images = images;
}

public int getNum() {
return num;
}

public void setNum(int num) {
this.num = num;
}

public int getPid() {
return pid;
}

public void setPid(int pid) {
this.pid = pid;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public int getPscid() {
return pscid;
}

public void setPscid(int pscid) {
this.pscid = pscid;
}

public int getSelected() {
return selected;
}

public void setSelected(int selected) {
this.selected = selected;
}

public int getSellerid() {
return sellerid;
}

public void setSellerid(int sellerid) {
this.sellerid = sellerid;
}

public String getSubhead() {
return subhead;
}

public void setSubhead(String subhead) {
this.subhead = subhead;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}
}
}
}


EventBus

public class Datas {

private String pid;
private String sellerid;
private int selected;
private String num;

public String getPid() {
return pid;
}

public void setPid(String pid) {
this.pid = pid;
}

public String getSellerid() {
return sellerid;
}

public void setSellerid(String sellerid) {
this.sellerid = sellerid;
}

public int getSelected() {
return selected;
}

public void setSelected(int selected) {
this.selected = selected;
}

public String getNum() {
return num;
}

public void setNum(String num) {
this.num = num;
}
}

public class MessageEvent {
private boolean checked;

public boolean isChecked() {
return checked;
}

public void setChecked(boolean checked) {
this.checked = checked;
}
}

public class PriceAndCountEvent {
private int price;
private int count;

public int getPrice() {
return price;
}

public void setPrice(int price) {
this.price = price;
}

public int getCount() {
return count;
}

public void setCount(int count) {
this.count = count;
}
}

初始化App

public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
Fresco.initialize(this);
}

//static 代码段可以防止内存泄露
static {
//设置全局的Header构建器
SmartRefreshLayout.setDefaultRefreshHeaderCreater(new DefaultRefreshHeaderCreater() {
@Override
public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header,默认是 贝塞尔雷达Header
}
});
//设置全局的Footer构建器
SmartRefreshLayout.setDefaultRefreshFooterCreater(new DefaultRefreshFooterCreater() {
@Override
public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//指定为经典Footer,默认是 BallPulseFooter
return new ClassicsFooter(context).setDrawableSize(20);
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: