Android Okhttp請求查詢購物車的例項程式碼

NO IMAGE
1 Star2 Stars3 Stars4 Stars5 Stars 給文章打分!
Loading...

查詢購物車的model層


public class SelectCarModel {
private String url="http://120.27.23.105/product/getCarts";
private HashMap<String, String> map = new HashMap<>();
public void verifySelectCarInfo(int uid, final ISelectCarPresenter iSelectCarPresenter){
map.put("uid",uid "");
OkHttpUtils.getInstance().doPost(url,map, new CallBack() {
@Override
public void onFailed(String msg) {
iSelectCarPresenter.onFailed("請求失敗");
}
@Override
public void onSuccess(String request) {
SelectCarBean selectCarBean = GsonUtils.getInstance().fromJson(request, SelectCarBean.class);
String code = selectCarBean.getCode();
if ("0".equals(code)){
List<SelectCarBean.DataBean> data = selectCarBean.getData();
iSelectCarPresenter.onSuccess(data);
}else{
iSelectCarPresenter.onFailed("請求失敗");
}
}
});
}
}

查詢購物車的介面

m層的


public interface ISelectCarPresenter {
void onFailed(String msg);
void onSuccess(List<SelectCarBean.DataBean> data);
}

p層的


public interface ISelectCarView {
void onFailed(String msg);
void onSuccess(List<SelectCarBean.DataBean> data);
}

查詢購物車的presenter層


public class SelectCarPresenter implements ISelectCarPresenter{
private ISelectCarView iSelectCarView;
private SelectCarModel selectCarModel;
public SelectCarPresenter (ISelectCarView iSelectCarView){
this.iSelectCarView = iSelectCarView;
selectCarModel = new SelectCarModel();
}
//執行集合資訊
public void excuteSelectCarData(int uid){
//傳到model
selectCarModel.verifySelectCarInfo(uid,this);
}
@Override
public void onFailed(String msg) {
iSelectCarView.onFailed(msg);
}
@Override
public void onSuccess(List<SelectCarBean.DataBean> data) {
iSelectCarView.onSuccess(data);
}
}

查詢購物車的view層


public class ShoppingCartActivity extends AppCompatActivity implements ISelectCarView,View.OnClickListener{
private boolean isLogin;
private SelectCarPresenter selectCarPresenter;
private ExpandableListView car_elv;
private List<Group> glist = new ArrayList<>();
private List<List<Child>> clist = new ArrayList<>();
private CarExpandAdapter carExpandAdapter;
private TextView edit_tv;
private CheckBox chooseAll;
private TextView totalPrice;
private TextView btnAmount;
private boolean isAll;
private double p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shoppingcar);
//初始化資料
init();
chooseAll.setOnClickListener(this);
btnAmount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ShoppingCartActivity.this, IndentActivity.class);
intent.putExtra("price",p "");
startActivity(intent);
}
});
}
/**
* 查詢購物車
*/
private void selectShoppingCar() {
selectCarPresenter = new SelectCarPresenter(this);
selectCarPresenter.excuteSelectCarData(3381);
carExpandAdapter = new CarExpandAdapter(this,glist,clist,this);
car_elv.setAdapter(carExpandAdapter);
}
/**
* 初始化屬性
*/
private void init() {
car_elv = (ExpandableListView) findViewById(R.id.car_elv);
edit_tv = (TextView) findViewById(R.id.edit_tv);
chooseAll = (CheckBox) findViewById(R.id.chooseAll);
totalPrice = (TextView) findViewById(R.id.totalPrice);
btnAmount = (TextView) findViewById(R.id.btnAmount);
//登入購物車
selectShoppingCar();
}
@Override
public void onFailed(String msg) {
}
@Override
public void onSuccess(List<SelectCarBean.DataBean> data) {
glist.clear();
clist.clear();
for(int i = 0;i<data.size();i  ){
glist.add(new Group(false,data.get(i).getSellerName()));
List<SelectCarBean.DataBean.ListBean> list = data.get(i).getList();
List<Child> cl = new ArrayList<>();
for (int j = 0; j< list.size(); j  ){
cl.add(new Child(false, list.get(j).getTitle(),list.get(j).getPrice(), list.get(j).getImages(), list.get(j).getNum(),list.get(j).getSubhead(),list.get(j).getPid()));
}
clist.add(cl);
}
for(int s = 0; s < carExpandAdapter.getGroupCount(); s  ){
car_elv.expandGroup(s);
}
carExpandAdapter.notifyDataSetChanged();
}
@Override
public void onResume() {
super.onResume();
init();
}
/**
* 反選
* @param isAll
*/
public void getisAll(Boolean isAll) {
chooseAll.setChecked(isAll);
}
/**
* 全選按鈕
* @param view
*/
@Override
public void onClick(View view) {
isAll = chooseAll.isChecked();
if (!(isAll==true)) {
for (int i = 0; i < glist.size(); i  ) {
glist.get(i).setFlag(false);
Log.e("Song","123");
}
for (int i=0 ;i<clist.size();i  ){
for (int j=0;j<clist.get(i).size();j  ){
clist.get(i).get(j).setFlag(false);
}
}
if (isAll==true){
isAll=false;
}
js();
carExpandAdapter.notifyDataSetChanged();
} else {
for (int i = 0; i < glist.size(); i  ) {
glist.get(i).setFlag(true);
}
for (int i=0 ;i<clist.size();i  ){
for (int j=0;j<clist.get(i).size();j  ){
clist.get(i).get(j).setFlag(true);
}
}
if (isAll==false){
isAll=true;
}
js();
carExpandAdapter.notifyDataSetChanged();
}
}
//結算
public void js(){
p = 0;
int s = 0;//選中商品數量
for(int i=0;i<clist.size();i  ){
for(int j=0;j<clist.get(i).size();j  ){
if(clist.get(i).get(j).isFlag()){
double price = clist.get(i).get(j).getPrice();
int num = clist.get(i).get(j).getNum();
p  = price * num;
s  ;
}
}
}
totalPrice.setText("總價:"  p  "¥");
btnAmount.setText("結算:(" s ")");
}
}

view層佈局


<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@ id/car_title"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#fff"
>
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="購物車"
android:textColor="#000"
android:textSize="35dp"
/>
<TextView
android:id="@ id/edit_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.5"
android:text="編輯"
android:textSize="20dp"
android:layout_marginRight="30dp"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginEnd="30dp" />
</RelativeLayout>
<ExpandableListView
android:id="@ id/car_elv"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9"
android:layout_below="@ id/car_title"></ExpandableListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:orientation="horizontal"
android:layout_gravity="bottom"
>
<CheckBox
android:id="@ id/chooseAll"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:padding="10dp"
android:text="全選"/>
<TextView
android:id="@ id/totalPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="25sp"
android:layout_weight="1"
android:padding="10dp"
android:gravity="center"
android:text="合計:0.00 ¥"/>
<TextView
android:id="@ id/btnAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="結算 : (0)"
android:gravity="center"
android:background="@android:color/holo_orange_light"
android:textColor="@android:color/black"
android:textSize="25sp"
android:padding="10dp"/>
</LinearLayout>
</LinearLayout>

二級購物車列表的介面卡


public class CarExpandAdapter extends BaseExpandableListAdapter{
private Context context;
private List<Group> groupList;
private List<List<Child>> childList;
private ShoppingCartActivity s;
public static boolean flog;
public CarExpandAdapter(Context context, List<Group> groupList, List<List<Child>> childList,ShoppingCartActivity s) {
this.context = context;
this.groupList = groupList;
this.childList = childList;
this.s = s;
}
@Override
public int getGroupCount() {
return groupList.size();
}
@Override
public int getChildrenCount(int i) {
return childList.get(i).size();
}
@Override
public Object getGroup(int i) {
return groupList.get(i);
}
@Override
public Object getChild(int i, int i1) {
return childList.get(i).get(i1);
}
@Override
public long getGroupId(int i) {
return i;
}
@Override
public long getChildId(int i, int i1) {
return i1;
}
@Override
public boolean hasStableIds() {
return false;
}
//第一級列表viewhodel
class GroupViewHolder{
CheckBox group_box;
TextView group_tv;
}
//第二級列表的viewhodel
class ChildViewHodel{
CheckBox child_box;
ImageView child_iv;
TextView child_tv_name;
TextView child_tv_attr;
TextView child_tv_price;
TextView child_tv_num;
TextView child_tv_minus;
TextView child_tv_show_num;
TextView child_tv_add;
Button delete;
}
@Override
public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
final GroupViewHolder holder;
if (view==null){
holder = new GroupViewHolder();
view = View.inflate(context, R.layout.group_layout,null);
holder.group_box = view.findViewById(R.id.group_box);
holder.group_tv = view.findViewById(R.id.group_tv);
view.setTag(holder);
}else{
holder = (GroupViewHolder) view.getTag();
}
holder.group_tv.setText(groupList.get(i).getName());
holder.group_box.setChecked(groupList.get(i).isFlag());
holder.group_box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//group布林值變成選中狀態
groupList.get(i).setFlag(holder.group_box.isChecked());
//遍歷Group的集合
for (int i=0;i<groupList.size();i  ){
//如果有一個未選中 全選變成FALSE並跳出
if (!groupList.get(i).isFlag()){
s.getisAll(false);
break;
}else{
s.getisAll(true);
}
}
//Child集合布林值為選中的狀態
for (int j=0;j<childList.get(i).size();j  ){
childList.get(i).get(j).setFlag(holder.group_box.isChecked());
}
//重新整理介面卡
notifyDataSetChanged();
s.js();
}
});
return view;
}
@Override
public View getChildView(final int i, final int i1, boolean b, View view, ViewGroup viewGroup) {
final ChildViewHodel hodel;
if (view == null){
hodel = new ChildViewHodel();
view = View.inflate(context,R.layout.child_layout,null);
hodel.child_box=view.findViewById(R.id.child_box);
hodel.child_iv = view.findViewById(R.id.child_iv);
hodel.child_tv_name = view.findViewById(R.id.child_tv_name);
hodel.child_tv_attr = view.findViewById(R.id.child_tv_attr);
hodel.child_tv_price = view.findViewById(R.id.child_tv_price);
hodel.child_tv_minus = view.findViewById(R.id.child_tv_minus);
hodel.child_tv_show_num = view.findViewById(R.id.child_tv_show_num);
hodel.child_tv_add = view.findViewById(R.id.child_tv_add);
hodel.child_tv_num = view.findViewById(R.id.child_tv_num);
hodel.delete=view.findViewById(R.id.delete);
view.setTag(hodel);
}else{
hodel = (ChildViewHodel) view.getTag();
}
hodel.child_tv_name.setText(childList.get(i).get(i1).getTitle());
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum() "");
hodel.child_tv_attr.setText(childList.get(i).get(i1).getColor());
hodel.child_tv_price.setText(childList.get(i).get(i1).getPrice() "");
Glide.with(context).load(childList.get(i).get(i1).getImage().split("\\|")[0]).into(hodel.child_iv);
hodel.child_box.setChecked(childList.get(i).get(i1).isFlag());
//刪除的點選事件,根據介面刪除的
hodel.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DeletePresenter presenter = new DeletePresenter(new DeleteView() {
@Override
public void onDeleteFailure(String error) {
Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
}
@Override
public void onDeleteSuccesss(String code) {
Toast.makeText(context, "刪除成功", Toast.LENGTH_SHORT).show();
}
});
int pid = childList.get(i).get(i1).getPid();
presenter.verfiy(3381 "",pid "");
childList.get(i).remove(i1);
//    if (childList.get(i).size()==0){
//     groupList.remove(i);
//    }
notifyDataSetChanged();
}
});
hodel.child_box.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Child布林值變成選中狀態
childList.get(i).get(i1).setFlag(hodel.child_box.isChecked());
//遍歷Child集合
for (int i=0;i<childList.size();i  ){
for (int j=0;j<childList.get(i).size();j  ){
//如果有一個未選中  全選與商家按鈕變成false並跳出
if(!childList.get(i).get(j).isFlag()){
groupList.get(i).setFlag(false);
s.getisAll(false);
break;
}else{//全部選中 全選與商家按鈕變成true
groupList.get(i).setFlag(true);
s.getisAll(false);
}
}
}
//二次遍歷
for(int i=0;i<groupList.size();i  ){
boolean flag = groupList.get(i).isFlag();
if(flag){
s.getisAll(true);
}else{
s.getisAll(false);
break;
}
}
notifyDataSetChanged();
//計算加減
s.js();
}
});
////
hodel.child_tv_minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num = hodel.child_tv_show_num.getText().toString();
int num1 = Integer.parseInt(num);
num1--;
childList.get(i).get(i1).setNum(num1);
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum() "");
notifyDataSetChanged();
s.js();
}
});
hodel.child_tv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String num = hodel.child_tv_show_num.getText().toString();
int num1 = Integer.parseInt(num);
num1  ;
childList.get(i).get(i1).setNum(num1);
hodel.child_tv_show_num.setText(childList.get(i).get(i1).getNum() "");
notifyDataSetChanged();
s.js();
}
});
return view;
}
@Override
public boolean isChildSelectable(int i, int i1) {
return false;
}
}

介面卡的一級佈局


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="match_parent">
<CheckBox
android:id="@ id/group_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@ id/group_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="商家"
/>
</LinearLayout>

介面卡二級佈局


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal" android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:id="@ id/child_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:scaleX="0.6"
android:scaleY="0.6" />
<ImageView
android:id="@ id/child_iv"
android:layout_width="70dp"
android:layout_height="80dp"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:background="@mipmap/ic_launcher"
android:layout_toRightOf="@id/child_box" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_toRightOf="@id/child_iv"
android:orientation="vertical">
<TextView
android:id="@ id/child_tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="酒紅色純紅色純羊毛西服套裝"
android:textColor="@android:color/black"
android:textSize="12sp"
android:textStyle="bold" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@ id/child_tv_attr"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:text="屬性:粉藍色"
android:textSize="12sp"
android:textColor="@color/colorPrimary" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:orientation="horizontal">
<TextView
android:id="@ id/child_tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="¥390"
android:textColor="@android:color/holo_red_dark"
android:textSize="12sp"
android:textStyle="bold" />
<TextView
android:id="@ id/child_tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:text="x1"
android:textColor="@android:color/darker_gray" />
<LinearLayout
android:id="@ id/rl_edit"
android:layout_width="120dp"
android:background="@android:color/holo_orange_light"
android:layout_height="30dp"
android:layout_marginLeft="20dp"
>
<TextView
android:id="@ id/child_tv_minus"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:textColor="@android:color/black"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text=" - " />
<TextView
android:id="@ id/child_tv_show_num"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:background="@android:color/white"
android:layout_margin="1dp"
android:layout_height="match_parent"
android:text="1"
/>
<TextView
android:id="@ id/child_tv_add"
android:layout_width="0dp"
android:layout_weight="1"
android:gravity="center"
android:layout_margin="1dp"
android:background="@android:color/white"
android:layout_height="match_parent"
android:text="   " />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<Button
android:id="@ id/delete"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="✘"
android:background="@android:color/holo_blue_light"
android:textSize="20sp"
android:textColor="@android:color/holo_green_dark"
android:layout_margin="5dp"
android:visibility="visible" />
</RelativeLayout>

bean類Child


public class Child {
/*
false,
list.get(j).getTitle(),
(float) list.get(j).getPrice(),
list.get(j).getImages(),
list.get(j).getNum()
*/
private boolean flag;
private String title;
private double price;
private String image;
private int num;
private String color;
private int pid;
public Child(boolean flag, String title, double price, String image, int num,String color,int pid) {
this.flag = flag;
this.title = title;
this.price = price;
this.image = image;
this.num = num;
this.color = color;
this.pid = pid;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getPid() {
return pid;
}
public void setPid(int pid) {
this.pid = pid;
}
}

group類


public class Group {
private boolean flag;
private String name;
public Group(boolean flag, String name) {
this.flag = flag;
this.name = name;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

以上這篇Android Okhttp請求查詢購物車的例項程式碼就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援指令碼之家。

您可能感興趣的文章:

Android使用OKHttp庫實現視訊檔案的上傳到伺服器功能Android 封裝Okhttp Retrofit RxJava,外加攔截器例項android 開發中使用okhttp上傳檔案到伺服器Android okhttp3.0忽略https證書的方法Android使用OkHttp請求自簽名的https網站的示例Android中okhttp3使用詳解android通過okhttpClient下載網頁內容的例項程式碼Android開發之OkHttpUtils的具體使用方法Android OKHTTP的單例和再封裝的例項Android中實現OkHttp上傳檔案到伺服器並帶進度android中實現OkHttp下載檔案並帶進度條Android使用OKHTTP解析JSON資料的例項程式碼Android使用OkHttp上傳圖片的例項程式碼Android OkHttp 結合php 多圖片上傳例項詳解Android中OkHttp3的例子和在子執行緒更新UI執行緒的方法android Retrofit2 okHttp3使用總結Android OkHttp Post上傳檔案並且攜帶引數例項詳解Android OkHttp基本使用詳解

相關文章

Android 開發 最新文章