需要的依赖和权限
compile 'com.google.code.gson:gson:2.8.2' compile 'com.squareup.okhttp3:okhttp:3.6.0' compile 'com.squareup.okio:okio:1.11.0' compile 'com.facebook.fresco:fresco:0.11.0' compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application android:name="com.bwie.test.custom.RookieApplication"
activity_order_form
<?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.test.orderformdemo.OrderFormActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp"> <ImageView android:layout_width="25dp" android:layout_height="25dp" android:src="@drawable/leftjiantou" android:layout_centerVertical="true" android:layout_marginLeft="10dp"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="购物车" android:layout_centerInParent="true"/> <TextView android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_alignParentBottom="true" android:background="#000000"/> </RelativeLayout> <ExpandableListView android:id="@+id/cart_list" android:groupIndicator="@null" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </ExpandableListView> <TextView android:layout_width="match_parent" android:layout_height="0.1dp" android:background="#000000"/> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <LinearLayout android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:gravity="center_vertical"> <CheckBox android:id="@+id/all_check" android:layout_width="25dp" android:layout_height="25dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="全选/反选"/> <TextView android:layout_marginLeft="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="总价:¥" android:textColor="#FF0000"/> <TextView android:id="@+id/total_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0.00" android:textColor="#FF0000"/> </LinearLayout> <Button android:id="@+id/clearing" android:layout_width="80dp" android:layout_height="match_parent" android:text="去结算(0)" android:textColor="#FFFFFF" android:background="@drawable/cart_btn_bg"/> </LinearLayout> </LinearLayout>
activity_order_list
<?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.test.orderformdemo.OrderListActivity"> <RelativeLayout android:id="@+id/parent" android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="订单列表" android:layout_centerInParent="true"/> <ImageView android:id="@+id/status" android:layout_width="25dp" android:layout_height="25dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:src="@drawable/lv_icon" android:layout_marginRight="10dp"/> <TextView android:layout_width="match_parent" android:layout_height="0.1dp" android:layout_alignParentBottom="true" android:background="#000000"/> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:id="@+id/unpaid" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:gravity="center" android:text="待支付"/> <TextView android:layout_width="1dp" android:layout_height="match_parent" android:background="#000000"/> <TextView android:id="@+id/paid" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:gravity="center" android:text="已支付"/> <TextView android:layout_width="1dp" android:layout_height="match_parent" android:background="#000000"/> <TextView android:id="@+id/canceled" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:gravity="center" android:text="已取消"/> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="0.1dp" android:background="#000000"/> <android.support.v7.widget.RecyclerView android:id="@+id/recy" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> </LinearLayout>
cart_child
<?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" android:layout_width="match_parent" android:layout_height="100dp" android:gravity="center_vertical"> <CheckBox android:id="@+id/child_check" android:layout_width="25dp" android:layout_height="25dp" /> <com.facebook.drawee.view.SimpleDraweeView android:id="@+id/image" android:layout_marginLeft="10dp" android:layout_width="80dp" android:layout_height="80dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="80dp" android:orientation="vertical"> <TextView android:id="@+id/child_title" android:layout_width="match_parent" android:layout_height="40dp" android:gravity="center_vertical" android:maxLines="1"/> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp"> <TextView android:id="@+id/price_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="优惠价:¥" android:textColor="#FF0000" android:layout_centerVertical="true"/> <TextView android:layout_toRightOf="@+id/price_text" android:id="@+id/bargain_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="0.00" android:textColor="#FF0000" android:layout_centerVertical="true"/> <com.bwie.test.custom.NumberAddSubView android:id="@+id/number_view" android:layout_alignParentRight="true" android:layout_width="100dp" android:layout_height="25dp" app:value="1" app:minValue="1" app:maxValue="200" android:layout_centerVertical="true"> </com.bwie.test.custom.NumberAddSubView> </RelativeLayout> </LinearLayout> </LinearLayout>
cart_group
<?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="40dp" android:orientation="horizontal" android:gravity="center_vertical"> <CheckBox android:id="@+id/group_check" android:layout_width="25dp" android:layout_height="25dp" /> <TextView android:id="@+id/group_name" android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
layout_pop
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="40dp" android:layout_height="92dp" android:orientation="vertical"> <TextView android:id="@+id/unpaid" android:layout_width="match_parent" android:layout_height="30dp" android:text="待支付" android:textSize="12sp" android:gravity="center"/> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000"/> <TextView android:id="@+id/paid" android:layout_width="match_parent" android:layout_height="30dp" android:text="已支付" android:textSize="12sp" android:gravity="center"/> <TextView android:layout_width="match_parent" android:layout_height="1dp" android:background="#000000"/> <TextView android:id="@+id/canceled" android:layout_width="match_parent" android:layout_height="30dp" android:text="已取消" android:textSize="12sp" android:gravity="center"/> </LinearLayout>
number_add_sub_view
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="100dp" android:layout_height="25dp" android:background="@drawable/selector_number_add_sub" android:orientation="horizontal"> <Button android:id="@+id/btn_sub" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:background="@drawable/bg_btn_style_white" android:text="-" android:textColor="#000000" android:textSize="14sp" /> <TextView android:id="@+id/tv_num" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:gravity="center" android:minWidth="100dp" android:text="1" /> <Button android:id="@+id/btn_add" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:background="@drawable/bg_btn_style_white" android:text="+" android:textColor="#000000" android:textSize="14sp" /> </LinearLayout>
order_recy_item
<?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="120dp" android:orientation="vertical" android:paddingLeft="20dp" android:paddingRight="20dp"> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp"> <TextView android:id="@+id/order_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="标题" android:layout_centerVertical="true"/> <TextView android:id="@+id/order_status" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="待"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp"> <TextView android:id="@+id/order_price_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="价格:¥" android:textColor="#FF0000" android:layout_centerVertical="true"/> <TextView android:id="@+id/order_price" android:layout_toRightOf="@+id/order_price_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:text="0.00" android:textColor="#FF0000"/> </RelativeLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="40dp"> <TextView android:id="@+id/time_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="创建时间:" android:layout_centerVertical="true"/> <TextView android:id="@+id/order_create_time" android:layout_toRightOf="@+id/time_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="2017" android:layout_centerVertical="true"/> <Button android:id="@+id/order_btn" android:layout_width="60dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:text="取消订单" android:textSize="8sp" android:background="@drawable/order_btn_bg"/> </RelativeLayout> </LinearLayout>
drawable文件夹下bg_btn_style_white
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="false"> <shape android:shape="rectangle"> <corners android:radius="2.0dp" /> <solid android:color="#7fd8d8d8" /> <stroke android:width="1.0dp" android:color="#dddddd" /> </shape> </item> <item android:state_pressed="true"> <shape android:shape="rectangle"> <corners android:radius="2.0dp" /> <solid android:color="#ffd8d8d8" /> <stroke android:width="1.0dp" android:color="#ddd" /> </shape> </item> <item> <shape android:shape="rectangle"> <corners android:radius="2.0dp" /> <solid android:color="#ffffff" /> <stroke android:width="1.0dp" android:color="#dddddd" /> </shape> </item> </selector>
cart_btn_bg
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FF0000"/> <stroke android:color="#000000" android:width="0.1dp"/> </shape>
order_btn_bg
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> <stroke android:color="#000000" android:width="0.1dp"/> <corners android:radius="5dp"/> </shape>
selector_number_add_sub
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="2dp" /> <stroke android:width="1dp" android:color="#dddddd" /> <solid android:color="#FFFFFF" /> </shape>
values文件夹下attrs
<?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="NumberAddSubView"> <attr name="value" format="integer|reference"/> <attr name="minValue" format="integer|reference"/> <attr name="maxValue" format="integer|reference"/> <attr name="btnAddBackground" format="reference"/> <attr name="btnSubBackground" format="reference"/> <attr name="textViewBackground" format="reference"/> </declare-styleable> </resources>
OrderFormActivity
import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.ExpandableListView; import android.widget.TextView; import com.bwie.test.adapter.CartListAdapter; import com.bwie.test.bean.CartBean; import com.bwie.test.orderformdemo.inter_01.CartAdapterCallBack; import com.bwie.test.presenter.CartPresenter; import com.bwie.test.presenter.inter.CartPreCallBack; import com.bwie.test.util.Api; import com.bwie.test.util.OkHttp3Util; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class OrderFormActivity extends AppCompatActivity implements CartPreCallBack,CartAdapterCallBack{ private ExpandableListView cart_list; private TextView total_price_text; private CheckBox all_check; private Button clearing; private CartPresenter cartPresenter; private List<CartBean.DataBean> dataBeans = new ArrayList<>(); private CartListAdapter adapter; private double totalPrice; private int quantity; private List<CartBean.DataBean.ListBean> toDelete = new ArrayList<>(); private int responseCount; private boolean flag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order_form); //隐藏原有标题 getSupportActionBar().hide(); //从presenter层调用方法 cartPresenter = new CartPresenter(this); //查找控件 cart_list = (ExpandableListView) findViewById(R.id.cart_list); total_price_text = (TextView) findViewById(R.id.total_price); all_check = (CheckBox) findViewById(R.id.all_check); all_check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { toDelete.clear(); for (int i=0; i<dataBeans.size(); i++) { toDelete.addAll(dataBeans.get(i).getList()); } responseCount = 0; flag = all_check.isChecked(); updateChildChecked(); } }); clearing = (Button) findViewById(R.id.clearing); clearing.setOnClickListener(new View.OnClickListener() { private AlertDialog alertDialog; @Override public void onClick(View view) { AlertDialog.Builder builder = new AlertDialog.Builder(OrderFormActivity.this); builder.setTitle("确认订单"); DecimalFormat decimalFormat = new DecimalFormat("#.00"); String priceString = decimalFormat.format(totalPrice); builder.setMessage("订单金额:¥" + priceString); builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { alertDialog.dismiss(); Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("price", String.valueOf(totalPrice)); params.put("token", Api.TOKEN); OkHttp3Util.doPost(Api.CREATE_ORDER, params, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()){ try { JSONObject jsonObject = new JSONObject(response.body().string()); if("订单创建成功".equals(jsonObject.getString("msg"))){ runOnUiThread(new Runnable() { @Override public void run() { Intent intent = new Intent(OrderFormActivity.this, OrderListActivity.class); startActivity(intent); } }); } } catch (JSONException e) { e.printStackTrace(); } } } }); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { alertDialog.dismiss(); } }); alertDialog = builder.create(); alertDialog.show(); } }); getCartData(); } private void getCartData(){ Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("token", Api.TOKEN); cartPresenter.postData(Api.GET_CARTS, params); } @Override public void onCartPreResponseSuccess(CartBean cartBean) { dataBeans.clear(); dataBeans.addAll(cartBean.getData()); runOnUiThread(new Runnable() { @Override public void run() { setAdapter(); } }); } private void setAdapter() { for (int i=0; i<dataBeans.size(); i++) { if(childsForGroupIsAllChecked(dataBeans.get(i).getList())){ dataBeans.get(i).setSelected(1); }else{ dataBeans.get(i).setSelected(0); } } if(childsIsAllChecked()){ all_check.setChecked(true); }else{ all_check.setChecked(false); } calculateTotalPriceAndQuantity(); if(adapter == null){ adapter = new CartListAdapter(OrderFormActivity.this, dataBeans); adapter.setCartAdapterCallBack(this); cart_list.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } //默认打开所有组 for (int i=0; i<dataBeans.size(); i++) { cart_list.expandGroup(i); } } private boolean childsForGroupIsAllChecked(List<CartBean.DataBean.ListBean> list){ for (int i=0; i<list.size(); i++) { if(list.get(i).getSelected() == 0){ return false; } } return true; } private boolean childsIsAllChecked(){ for (int i=0; i<dataBeans.size(); i++) { for (int j=0; j<dataBeans.get(i).getList().size(); j++) { if(dataBeans.get(i).getList().get(j).getSelected() == 0){ return false; } } } return true; } private void calculateTotalPriceAndQuantity(){ totalPrice = 0; quantity = 0; for (int i=0; i<dataBeans.size(); i++) { for (int j=0; j<dataBeans.get(i).getList().size(); j++) { if(dataBeans.get(i).getList().get(j).getSelected() == 1){ totalPrice += dataBeans.get(i).getList().get(j).getBargainPrice() * dataBeans.get(i).getList().get(j).getNum(); quantity += dataBeans.get(i).getList().get(j).getNum(); } } } DecimalFormat decimalFormat = new DecimalFormat("#.00"); String priceString = decimalFormat.format(totalPrice); total_price_text.setText(String.valueOf(priceString)); clearing.setText("去结算(" + quantity + ")"); } @Override public void onCartPreResponseError() { } @Override public void onGroupCheckBoxChanged(int group, boolean isChecked) { toDelete.clear(); toDelete.addAll(dataBeans.get(group).getList()); responseCount = 0; flag = isChecked; updateChildChecked(); } private void updateChildChecked(){ CartBean.DataBean.ListBean listBean = toDelete.get(responseCount); Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("sellerid", String.valueOf(listBean.getSellerid())); params.put("pid", String.valueOf(listBean.getPid())); params.put("selected", String.valueOf(flag?1:0)); params.put("num", String.valueOf(listBean.getNum())); params.put("token", Api.TOKEN); OkHttp3Util.doPost(Api.UPDATE_CARTS, params, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ if(responseCount < toDelete.size()-1){ responseCount++; updateChildChecked(); }else{ getCartData(); } } } }); } @Override public void onChildCheckBoxChanged(int group, int child, boolean isChecked) { CartBean.DataBean.ListBean listBean = dataBeans.get(group).getList().get(child); Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("sellerid", String.valueOf(listBean.getSellerid())); params.put("pid", String.valueOf(listBean.getPid())); params.put("selected", String.valueOf(isChecked?1:0)); params.put("num", String.valueOf(listBean.getNum())); params.put("token", Api.TOKEN); OkHttp3Util.doPost(Api.UPDATE_CARTS, params, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ getCartData(); } } }); } @Override public void onNumberChanged(int group, int child, int value) { CartBean.DataBean.ListBean listBean = dataBeans.get(group).getList().get(child); Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("sellerid", String.valueOf(listBean.getSellerid())); params.put("pid", String.valueOf(listBean.getPid())); params.put("selected", String.valueOf(listBean.getSelected())); params.put("num", String.valueOf(value)); params.put("token", Api.TOKEN); OkHttp3Util.doPost(Api.UPDATE_CARTS, params, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ getCartData(); } } }); } }
OrderListActivity
import android.content.DialogInterface; import android.graphics.drawable.BitmapDrawable; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; import com.bwie.test.adapter.OrderRecyAdapter; import com.bwie.test.bean.OrderBean; import com.bwie.test.model.inters.OrderModelCallback; import com.bwie.test.orderformdemo.inter_01.OrderAdapterCallBack; import com.bwie.test.presenter.OrderPresenter; import com.bwie.test.presenter.inter.OrderPreCallBack; import com.bwie.test.util.Api; import com.bwie.test.util.OkHttp3Util; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class OrderListActivity extends AppCompatActivity implements OrderPreCallBack, OrderAdapterCallBack, View.OnClickListener{ private ImageView status; private TextView unpaid; private TextView paid; private TextView canceled; private RecyclerView recy; private OrderPresenter orderPresenter; private List<OrderBean.DataBean> dataBeans = new ArrayList<>(); private OrderRecyAdapter adapter; private String pageCategory = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order_list); //隐藏原有标题 getSupportActionBar().hide(); //调用presenter的方法 orderPresenter = new OrderPresenter(this); //查找控件 status = (ImageView) findViewById(R.id.status); status.setOnClickListener(new View.OnClickListener() { private PopupWindow popupWindow; @Override public void onClick(View view) { View view1 = View.inflate(OrderListActivity.this, R.layout.layout_pop, null); view1.findViewById(R.id.unpaid).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { popupWindow.dismiss(); pageCategory = "unpaid"; getOrderData(); } }); view1.findViewById(R.id.paid).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { popupWindow.dismiss(); pageCategory = "paid"; getOrderData(); } }); view1.findViewById(R.id.canceled).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { popupWindow.dismiss(); pageCategory = "canceled"; getOrderData(); } }); popupWindow = new PopupWindow(view1, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new BitmapDrawable()); popupWindow.setOutsideTouchable(true); popupWindow.setFocusable(true); popupWindow.showAsDropDown(status); } }); unpaid = (TextView) findViewById(R.id.unpaid); unpaid.setOnClickListener(this); paid = (TextView) findViewById(R.id.paid); paid.setOnClickListener(this); canceled = (TextView) findViewById(R.id.canceled); canceled.setOnClickListener(this); recy = (RecyclerView) findViewById(R.id.recy); getOrderData(); } private void getOrderData(){ Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("token", Api.TOKEN); orderPresenter.postData(Api.GET_ORDERS, params); } @Override public void onOrderPreResponseSuccess(OrderBean orderBean) { dataBeans.clear(); if(pageCategory == null){ dataBeans.addAll(orderBean.getData()); }else if("unpaid".equals(pageCategory)){ screeningDataByStatus(orderBean.getData(), 0); }else if("paid".equals(pageCategory)){ screeningDataByStatus(orderBean.getData(), 1); }else if("canceled".equals(pageCategory)){ screeningDataByStatus(orderBean.getData(), 2); } runOnUiThread(new Runnable() { @Override public void run() { setAdapter(); } }); } private void screeningDataByStatus(List<OrderBean.DataBean> data, int status){ for (int i=0; i<data.size(); i++) { if(data.get(i).getStatus() == status){ dataBeans.add(data.get(i)); } } } private void setAdapter() { recy.setLayoutManager(new LinearLayoutManager(OrderListActivity.this, LinearLayoutManager.VERTICAL, false)); if(adapter == null){ adapter = new OrderRecyAdapter(OrderListActivity.this, dataBeans); adapter.setOrderAdapterCallBack(this); recy.setAdapter(adapter); }else{ adapter.notifyDataSetChanged(); } } @Override public void onOrderPreResponseError() { } @Override public void onCancelClick(final int position) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); builder.setMessage("确定取消订单吗?"); builder.setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { OrderBean.DataBean dataBean = dataBeans.get(position); //uid status(0 待支付 1 已支付 2 已取消) orderId token Map<String, String> params = new HashMap<>(); params.put("uid", Api.UID); params.put("status", String.valueOf(2)); params.put("orderId", String.valueOf(dataBean.getOrderid())); params.put("token", Api.TOKEN); OkHttp3Util.doPost(Api.UPDATE_ORDER, params, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, final Response response) throws IOException { if(response.isSuccessful()){ try { JSONObject jsonObject = new JSONObject(response.body().string()); if("0".equals(jsonObject.getString("code"))){ getOrderData(); } } catch (Exception e) { } } } }); } }).setNegativeButton("否", null); builder.show(); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.unpaid: pageCategory = "unpaid"; getOrderData(); break; case R.id.paid: pageCategory = "paid"; getOrderData(); break; case R.id.canceled: pageCategory = "canceled"; getOrderData(); break; default: break; } } }
inter_01文件夹下CartAdapterCallBack
public interface CartAdapterCallBack { void onGroupCheckBoxChanged(int group, boolean isChecked); void onChildCheckBoxChanged(int group, int child, boolean isChecked); void onNumberChanged(int group, int child, int value); }
OrderAdapterCallBack
public interface OrderAdapterCallBack { void onCancelClick(int position); }
custom文件夹下NumberAddSubView
import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.text.TextUtils; import android.util.AttributeSet; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import com.bwie.test.orderformdemo.R; public class NumberAddSubView extends LinearLayout implements View.OnClickListener{ private Button btn_sub; private Button btn_add; private TextView tv_num; private Context mContext; /** * 设置默认值 */ private int value = 1; private int minValue = 1; private int maxValue = 5; public NumberAddSubView(Context context) { this(context, null); } public NumberAddSubView(Context context, AttributeSet attrs) { this(context, attrs, 0); } @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) public NumberAddSubView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.mContext = context; initView(context); //得到属性 if (attrs != null) { TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NumberAddSubView); //TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, // R.styleable.NumberAddSubView, defStyleAttr, 0); int value = a.getInt(R.styleable.NumberAddSubView_value, 0); setValue(value); int maxValue = a.getInt(R.styleable.NumberAddSubView_maxValue, 0); setMaxValue(maxValue); int minValue = a.getInt(R.styleable.NumberAddSubView_minValue, 0); setMinValue(minValue); Drawable btnSubBackground = a.getDrawable(R.styleable.NumberAddSubView_btnSubBackground); if (btnSubBackground != null) btn_sub.setBackground(btnSubBackground); Drawable btnAddBackground = a.getDrawable(R.styleable.NumberAddSubView_btnAddBackground); if (btnAddBackground != null) btn_sub.setBackground(btnAddBackground); Drawable textViewBackground = a.getDrawable(R.styleable.NumberAddSubView_textViewBackground); if (textViewBackground != null) tv_num.setBackground(textViewBackground); a.recycle(); } } private void initView(Context context) { //第三个参数:把当前View加载到NumberAddSubView控件上 View.inflate(context, R.layout.number_add_sub_view, this); btn_sub = (Button) findViewById(R.id.btn_sub); btn_add = (Button) findViewById(R.id.btn_add); tv_num = (TextView) findViewById(R.id.tv_num); btn_sub.setOnClickListener(this); btn_add.setOnClickListener(this); } public int getValue() { String val = tv_num.getText().toString(); if (!TextUtils.isEmpty(val)) { value = Integer.parseInt(val); } return value; } public void setValue(int value) { this.value = value; tv_num.setText(value + ""); } public int getMinValue() { return minValue; } public void setMinValue(int minValue) { this.minValue = minValue; } public int getMaxValue() { return maxValue; } public void setMaxValue(int maxValue) { this.maxValue = maxValue; } @Override public void onClick(View v) { if (v.getId() == R.id.btn_sub) { // Toast.makeText(mContext,"减",Toast.LENGTH_SHORT).show(); subNum(); if (onButtonClickListenter != null) { onButtonClickListenter.onButtonSubClick(v, value); } } else if (v.getId() == R.id.btn_add) { // Toast.makeText(mContext,"加",Toast.LENGTH_SHORT).show(); addNum(); if (onButtonClickListenter != null) { onButtonClickListenter.onButtonAddClick(v, value); } } } /** * 减少数据 */ private void subNum() { if (value > minValue) { value = value - 1; tv_num.setText(value + ""); } } /** * 添加数据 */ private void addNum() { if (value < maxValue) { value = value + 1; tv_num.setText(value + ""); } } public interface OnButtonClickListenter { /** * 当增加按钮被点击的时候回调该方法 * * @param view * @param value */ public void onButtonAddClick(View view, int value); /** * 当减少按钮被点击的时候回调这个方法 * @param view * @param value */ public void onButtonSubClick(View view, int value); } private OnButtonClickListenter onButtonClickListenter; public void setOnButtonClickListenter(OnButtonClickListenter onButtonClickListenter) { this.onButtonClickListenter = onButtonClickListenter; } }
RookieApplication
import android.app.Application; import com.facebook.drawee.backends.pipeline.Fresco; public class RookieApplication extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } }
adapter文件夹下CartListAdapter
import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseExpandableListAdapter; import android.widget.CheckBox; import android.widget.TextView; import com.bwie.test.bean.CartBean; import com.bwie.test.custom.NumberAddSubView; import com.bwie.test.orderformdemo.R; import com.bwie.test.orderformdemo.inter_01.CartAdapterCallBack; import com.facebook.drawee.view.SimpleDraweeView; import java.util.List; public class CartListAdapter extends BaseExpandableListAdapter{ private Context context; private List<CartBean.DataBean> dataBeans; private CartAdapterCallBack callBack; public CartListAdapter(Context context, List<CartBean.DataBean> dataBeans) { this.context = context; this.dataBeans = dataBeans; } @Override public int getGroupCount() { return dataBeans.size(); } @Override public int getChildrenCount(int i) { return dataBeans.get(i).getList().size(); } @Override public Object getGroup(int i) { return null; } @Override public Object getChild(int i, int i1) { return null; } @Override public long getGroupId(int i) { return 0; } @Override public long getChildId(int i, int i1) { return 0; } @Override public boolean hasStableIds() { return false; } @Override public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) { final GroupViewHolder groupViewHolder; if (view == null){ view = View.inflate(context, R.layout.cart_group, null); groupViewHolder = new GroupViewHolder(); groupViewHolder.group_check = view.findViewById(R.id.group_check); groupViewHolder.group_name = view.findViewById(R.id.group_name); view.setTag(groupViewHolder); } else { groupViewHolder = (GroupViewHolder) view.getTag(); } groupViewHolder.group_check.setChecked(dataBeans.get(i).getSelected() == 1?true:false); groupViewHolder.group_check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { callBack.onGroupCheckBoxChanged(i, groupViewHolder.group_check.isChecked()); } }); groupViewHolder.group_name.setText(dataBeans.get(i).getSellerName()); return view; } @Override public View getChildView(final int i,final int i1, boolean b, View view, ViewGroup viewGroup) { final ChildViewHolder childViewHolder; if(view == null){ view = View.inflate(context, R.layout.cart_child, null); childViewHolder = new ChildViewHolder(); childViewHolder.child_check = view.findViewById(R.id.child_check); childViewHolder.image = view.findViewById(R.id.image); childViewHolder.child_title = view.findViewById(R.id.child_title); childViewHolder.child_bargain_price = view.findViewById(R.id.bargain_price); childViewHolder.numberAddSubView = view.findViewById(R.id.number_view); view.setTag(childViewHolder); } else { childViewHolder = (ChildViewHolder) view.getTag(); } CartBean.DataBean.ListBean listBean = dataBeans.get(i).getList().get(i1); childViewHolder.child_check.setChecked(listBean.getSelected() == 1?true:false); childViewHolder.child_check.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { callBack.onChildCheckBoxChanged(i, i1, childViewHolder.child_check.isChecked()); } }); childViewHolder.image.setImageURI(listBean.getImages().split("\\|")[0]); childViewHolder.child_title.setText(listBean.getTitle()); childViewHolder.child_bargain_price.setText(String.valueOf(listBean.getBargainPrice())); childViewHolder.numberAddSubView.setValue(listBean.getNum()); childViewHolder.numberAddSubView.setOnButtonClickListenter(new NumberAddSubView.OnButtonClickListenter() { @Override public void onButtonAddClick(View view, int value) { callBack.onNumberChanged(i, i1, value); } @Override public void onButtonSubClick(View view, int value) { callBack.onNumberChanged(i, i1, value); } }); return view; } @Override public boolean isChildSelectable(int i, int i1) { return true; } class GroupViewHolder{ CheckBox group_check; TextView group_name; } class ChildViewHolder{ CheckBox child_check; SimpleDraweeView image; TextView child_title; TextView child_bargain_price; NumberAddSubView numberAddSubView; } public void setCartAdapterCallBack(CartAdapterCallBack callBack) { this.callBack = callBack; } }
OrderRecyAdapter
import android.content.Context; import android.graphics.Color; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; import com.bwie.test.bean.OrderBean; import com.bwie.test.orderformdemo.R; import com.bwie.test.orderformdemo.inter_01.OrderAdapterCallBack; import java.util.List; public class OrderRecyAdapter extends RecyclerView.Adapter<OrderRecyAdapter.OrderRecyViewHolder>{ private Context context; private List<OrderBean.DataBean> dataBeans; private OrderAdapterCallBack callBack; public OrderRecyAdapter(Context context, List<OrderBean.DataBean> dataBeans) { this.context = context; this.dataBeans = dataBeans; } @Override public OrderRecyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.order_recy_item, parent, false); OrderRecyViewHolder orderRecyViewHolder = new OrderRecyViewHolder(view); return orderRecyViewHolder; } @Override public void onBindViewHolder(OrderRecyViewHolder holder,final int position) { holder.order_title.setText(dataBeans.get(position).getTitle()); if(dataBeans.get(position).getStatus() == 0){ holder.order_status.setText("待支付"); holder.order_status.setTextColor(Color.RED); }else if(dataBeans.get(position).getStatus() == 1){ holder.order_status.setText("已支付"); holder.order_status.setTextColor(Color.BLACK); }else if(dataBeans.get(position).getStatus() == 2){ holder.order_status.setText("已取消"); holder.order_status.setTextColor(Color.BLACK); } holder.order_price.setText(String.valueOf(dataBeans.get(position).getPrice())); holder.order_create_time.setText(dataBeans.get(position).getCreatetime()); if(dataBeans.get(position).getStatus() == 0){ holder.order_btn.setText("取消订单"); holder.order_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { callBack.onCancelClick(position); } }); }else if(dataBeans.get(position).getStatus() == 1 || dataBeans.get(position).getStatus() == 2){ holder.order_btn.setText("查看订单"); holder.order_btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(context, "查看订单", Toast.LENGTH_SHORT).show(); } }); } } @Override public int getItemCount() { return dataBeans.size(); } public void setOrderAdapterCallBack(OrderAdapterCallBack callBack){ this.callBack = callBack; } class OrderRecyViewHolder extends RecyclerView.ViewHolder{ public TextView order_title; public TextView order_status; public TextView order_price; public TextView order_create_time; public TextView order_btn; public OrderRecyViewHolder(View itemView) { super(itemView); order_title = itemView.findViewById(R.id.order_title); order_status = itemView.findViewById(R.id.order_status); order_price = itemView.findViewById(R.id.order_price); order_create_time = itemView.findViewById(R.id.order_create_time); order_btn = itemView.findViewById(R.id.order_btn); } } }
model文件夹下CartModel
import com.bwie.test.bean.CartBean; import com.bwie.test.model.inters.CartModelCallback; import com.bwie.test.util.OkHttp3Util; import com.google.gson.Gson; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class CartModel { private CartModelCallback callback; public CartModel(CartModelCallback callback) { this.callback = callback; } public void getData(String url){ OkHttp3Util.doGet(url, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ Gson gson = new Gson(); CartBean cartBean = gson.fromJson(response.body().string(), CartBean.class); callback.onCartModelResponseSuccess(cartBean); } } }); } public void postData(String url, Map<String,String> params){ OkHttp3Util.doPost(url, params, new Callback() { @Override public void onFailure(Call call, IOException e) { callback.onCartModelResponseError(); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ Gson gson = new Gson(); CartBean cartBean = gson.fromJson(response.body().string(), CartBean.class); callback.onCartModelResponseSuccess(cartBean); } } }); } }
OrderModel
import com.bwie.test.bean.OrderBean; import com.bwie.test.model.inters.OrderModelCallback; import com.bwie.test.util.OkHttp3Util; import com.google.gson.Gson; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.Response; public class OrderModel { private OrderModelCallback ordercallback; public OrderModel(OrderModelCallback ordercallback) { this.ordercallback = ordercallback; } public void getData(String url){ OkHttp3Util.doGet(url, new Callback() { @Override public void onFailure(Call call, IOException e) { ordercallback.onOrderModelResponseError(); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ Gson gson = new Gson(); OrderBean orderBean = gson.fromJson(response.body().string(), OrderBean.class); ordercallback.onOrderModelResponseSuccess(orderBean); } } }); } public void postData(String url, Map<String, String> params){ OkHttp3Util.doPost(url, params, new Callback() { @Override public void onFailure(Call call, IOException e) { ordercallback.onOrderModelResponseError(); } @Override public void onResponse(Call call, Response response) throws IOException { if(response.isSuccessful()){ Gson gson = new Gson(); OrderBean orderBean = gson.fromJson(response.body().string(), OrderBean.class); ordercallback.onOrderModelResponseSuccess(orderBean); } } }); } }
inters文件夹下CartModelCallback
import com.bwie.test.bean.CartBean; public interface CartModelCallback { void onCartModelResponseSuccess(CartBean cartBean); void onCartModelResponseError(); }
OrderModelCallback
import com.bwie.test.bean.OrderBean; public interface OrderModelCallback { void onOrderModelResponseSuccess(OrderBean orderBean); void onOrderModelResponseError(); }
presenter文件夹下CartPresenter
import com.bwie.test.bean.CartBean; import com.bwie.test.model.CartModel; import com.bwie.test.model.inters.CartModelCallback; import com.bwie.test.presenter.inter.CartPreCallBack; import java.util.Map; public class CartPresenter implements CartModelCallback{ private CartModel cartModel; private CartPreCallBack cartPreCallBack; public CartPresenter(CartPreCallBack cartPreCallBack) { this.cartModel = new CartModel(this); this.cartPreCallBack = cartPreCallBack; } public void getData(String url){ cartModel.getData(url); } public void postData(String url, Map<String, String> params){ cartModel.postData(url, params); } @Override public void onCartModelResponseSuccess(CartBean cartBean) { cartPreCallBack.onCartPreResponseSuccess(cartBean); } @Override public void onCartModelResponseError() { cartPreCallBack.onCartPreResponseError(); } }
OrderPresenter
import com.bwie.test.bean.OrderBean; import com.bwie.test.model.OrderModel; import com.bwie.test.model.inters.OrderModelCallback; import com.bwie.test.orderformdemo.OrderListActivity; import com.bwie.test.presenter.inter.OrderPreCallBack; import java.util.Map; public class OrderPresenter implements OrderModelCallback{ private OrderModel orderModel; private OrderPreCallBack callBack; public OrderPresenter(OrderPreCallBack callBack) { this.orderModel = new OrderModel(this); this.callBack = callBack; } public void getData(String url){ orderModel.getData(url); } public void postData(String url, Map<String, String> params){ orderModel.postData(url, params); } @Override public void onOrderModelResponseSuccess(OrderBean orderBean) { callBack.onOrderPreResponseSuccess(orderBean); } @Override public void onOrderModelResponseError() { callBack.onOrderPreResponseError(); } }
inter文件夹下CartPreCallBack
import com.bwie.test.bean.CartBean; public interface CartPreCallBack { void onCartPreResponseSuccess(CartBean cartBean); void onCartPreResponseError(); }
OrderPreCallBack
import com.bwie.test.bean.OrderBean; public interface OrderPreCallBack { void onOrderPreResponseSuccess(OrderBean orderBean); void onOrderPreResponseError(); }
util文件夹下Api
public class Api { public static String UID = "2752"; public static String TOKEN = "281AAB332365B682754BA7D0D37371D3"; //添加购物车 uid pid token public static String ADD_CART = "https://www.zhaoapi.cn/product/addCart"; //查询购物车 uid token public static String GET_CARTS = "https://www.zhaoapi.cn/product/getCarts"; //更新购物车 uid sellerid pid selected num token public static String UPDATE_CARTS = "https://www.zhaoapi.cn/product/updateCarts"; //删除购物车 uid pid token public static String DELETE_CART = "https://www.zhaoapi.cn/product/deleteCart"; //创建订单 uid price token public static String CREATE_ORDER = "https://www.zhaoapi.cn/product/createOrder"; //修改订单状态 uid status(0 待支付 1 已支付 2 已取消) orderId token public static String UPDATE_ORDER = "https://www.zhaoapi.cn/product/updateOrder"; //订单列表 uid token (page 非必填) public static String GET_ORDERS = "https://www.zhaoapi.cn/product/getOrders"; }
OkHttp3Util
import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.util.Log; import android.widget.Toast; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Cache; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.Interceptor; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public class OkHttp3Util { public static OkHttpClient okHttpClient = null; public OkHttp3Util() { } public static OkHttpClient getInstance(){ if(okHttpClient == null){ synchronized (OkHttpClient.class) { if(okHttpClient == null){ File cacheDir = new File(Environment.getExternalStorageDirectory(), "cache"); int cacheSize = 10 * 1024 * 1024; okHttpClient = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) .addInterceptor(new CommonParamsInterceptor()) .cache(new Cache(cacheDir, cacheSize)) .build(); } } } return okHttpClient; } public static void doGet(String url, Callback callback){ okHttpClient = getInstance(); Request request = new Request.Builder().url(url).build(); Call call = okHttpClient.newCall(request); call.enqueue(callback); } public static void doPost(String url, Map<String, String> params, Callback callback){ okHttpClient = getInstance(); FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String, String> entry : params.entrySet()) { builder.add(entry.getKey(), entry.getValue()); } Request request = new Request.Builder().url(url).post(builder.build()).build(); Call call = okHttpClient.newCall(request); call.enqueue(callback); } /** * 公共参数拦截器 */ private static class CommonParamsInterceptor implements Interceptor { //拦截的方法 @Override public Response intercept(Chain chain) throws IOException { //获取到请求 Request request = chain.request(); //获取请求的方式 String method = request.method(); //获取请求的路径 String oldUrl = request.url().toString(); Log.e("---拦截器",request.url()+"---"+request.method()+"--"+request.header("User-agent")); //要添加的公共参数...map Map<String,String> map = new HashMap<>(); map.put("source","android"); if ("GET".equals(method)){ StringBuilder stringBuilder = new StringBuilder();//创建一个stringBuilder stringBuilder.append(oldUrl); if (oldUrl.contains("?")){ //?在最后面....2类型 if (oldUrl.indexOf("?") == oldUrl.length()-1){ }else { //3类型...拼接上& stringBuilder.append("&"); } } else { stringBuilder.append("?"); } //添加公共参数.... for (Map.Entry<String,String> entry: map.entrySet()) { //拼接 stringBuilder.append(entry.getKey()) .append("=") .append(entry.getValue()) .append("&"); } //删掉最后一个&符号 if (stringBuilder.indexOf("&") != -1){ stringBuilder.deleteCharAt(stringBuilder.lastIndexOf("&")); } String newUrl = stringBuilder.toString();//新的路径 //拿着新的路径重新构建请求 request = request.newBuilder() .url(newUrl) .build(); }else if ("POST".equals(method)){ //先获取到老的请求的实体内容 RequestBody oldRequestBody = request.body(); //如果请求调用的是上面doPost方法 if (oldRequestBody instanceof FormBody){ FormBody oldBody = (FormBody) oldRequestBody; //构建一个新的请求实体内容 FormBody.Builder builder = new FormBody.Builder(); //1.添加老的参数 for (int i=0;i<oldBody.size();i++){ builder.add(oldBody.name(i),oldBody.value(i)); } //2.添加公共参数 for (Map.Entry<String,String> entry:map.entrySet()) { builder.add(entry.getKey(),entry.getValue()); } FormBody newBody = builder.build();//新的请求实体内容 //构建一个新的请求 request = request.newBuilder() .url(oldUrl) .post(newBody) .build(); } } Response response = chain.proceed(request); return response; } } }
bean文件夹下CartBean
import java.util.List; public class CartBean { 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 { private String sellerName; private String sellerid; private List<ListBean> list; private int selected; public int getSelected() { return selected; } public void setSelected(int selected) { this.selected = selected; } 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 { 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; 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; } } } }
OrderBean
import java.util.List; public class OrderBean { private String msg; private String code; private String page; 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 String getPage() { return page; } public void setPage(String page) { this.page = page; } public List<DataBean> getData() { return data; } public void setData(List<DataBean> data) { this.data = data; } public static class DataBean { private String createtime; private int orderid; private double price; private int status; private String title; private int uid; public String getCreatetime() { return createtime; } public void setCreatetime(String createtime) { this.createtime = createtime; } public int getOrderid() { return orderid; } public void setOrderid(int orderid) { this.orderid = orderid; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getStatus() { return status; } public void setStatus(int status) { this.status = status; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getUid() { return uid; } public void setUid(int uid) { this.uid = uid; } } }