购物车逻辑思维

package com.example.gouwuche2.activity;

import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.OrientationHelper;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

import com.example.gouwuche.R;
import com.example.gouwuche.persenter.IPersenter;
import com.example.gouwuche.view.IView;
import com.example.gouwuche2.adapter.ContentAdapter;
import com.example.gouwuche2.bean.JiaRuBean;
import com.example.gouwuche2.bean.UserBean;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

private String url = "http://www.zhaoapi.cn/product/searchProducts?keywords=%E6%89%8B%E6%9C%BA";
private ContentAdapter adapter;
private IPersenter mPersenter;
private RecyclerView contents;
private List<UserBean.DataBean> mlist = new ArrayList<>();
private CheckBox cb;
private TextView text_totalPrice;
private Button but_totalNum;
private String path = "http://www.zhaoapi.cn/product/addCart";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.shop_main);
    mPersenter = new IPersenter(this);
    initView();
    startRequest();
    initCb();
    //加入购物车的
    initGou();
    //查看购物车
    initSelect();
}

private void initSelect() {
    adapter.setItemClick(new ContentAdapter.ItemClick() {
        @Override
        public void success() {
            startActivity(new Intent(MainActivity.this,LoginActivity.class));
        }
    });
}

private void initGou() {
    adapter.setOnItemLongClick(new ContentAdapter.OnItemLongClick() {
        @Override
        public void success(String pid) {
            gouwucheStart(pid);
        }
    });
}

private void gouwucheStart(String pid) {
    Map<String,String> map = new HashMap<>();
    map.put("uid","24193");
    map.put("pid",pid);
    mPersenter.requestData(path,map,JiaRuBean.class);
}

private void initCb() {
    adapter.setOnItemClick(new ContentAdapter.OnItemClick() {
        @Override
        public void success() {
            double totalPrice = 0;
            int num = 0;
            int totalNum = 0;

            for(int i=0;i<mlist.size();i++)
            {
                totalNum = totalNum+mlist.get(i).getNum();
                if(mlist.get(i).isCheck())
                {
                    totalPrice = totalPrice+(mlist.get(i).getPrice()*mlist.get(i).getNum());
                    num = num+mlist.get(i).getNum();
                }
            }

            if(num<totalNum)
            {
                cb.setChecked(false);
            }else{
                cb.setChecked(true);
            }
            text_totalPrice.setText("合计:"+totalPrice);
            but_totalNum.setText("去结算"+"("+num+")");
        }
    });
}

private void initView() {
    contents = findViewById(R.id.recyclerview);
    adapter = new ContentAdapter(this);
    contents.setAdapter(adapter);
    cb = findViewById(R.id.cb_qx);

    text_totalPrice = findViewById(R.id.price);
    but_totalNum = findViewById(R.id.total);

    cb.setOnClickListener(this);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
    contents.setLayoutManager(linearLayoutManager);

    DividerItemDecoration decoration = new DividerItemDecoration(this,OrientationHelper.VERTICAL);
    contents.addItemDecoration(decoration);
}

private void startRequest() {
    Map<String,String> map = new HashMap<>();
    map.put("page","1");
    mPersenter.requestData(url,map,UserBean.class);
}

@Override
public void showRequest(Object data) {
    if(data instanceof UserBean)
    {
        UserBean user = (UserBean) data;
        mlist.addAll(user.getData());
        adapter.setMlist(mlist);
    }
    if(data instanceof JiaRuBean)
    {
        JiaRuBean user = (JiaRuBean) data;
        Toast.makeText(MainActivity.this,user.getMsg(),Toast.LENGTH_LONG).show();
    }
}

@Override
public void onClick(View v) {
    switch (v.getId())
    {
        case R.id.cb_qx:
            checkSeller(cb.isChecked());
            adapter.notifyDataSetChanged();
            break;
    }
}

private void checkSeller(boolean checked) {

    adapter.selectOrRemoveAll(cb.isSelected());

    double totalPrice = 0;
    int num = 0;
    for(int i=0;i<mlist.size();i++)
    {
        mlist.get(i).setCheck(checked);
        totalPrice = totalPrice+(mlist.get(i).getPrice()*mlist.get(i).getNum());
        num = num+mlist.get(i).getNum();
    }

    if(checked)
    {
        text_totalPrice.setText("合计:"+totalPrice);
        but_totalNum.setText("去结算"+"("+num+")");
    }else{
        text_totalPrice.setText("合计:");
        but_totalNum.setText("去结算(0)");
    }
}

}

适配器

package com.example.gouwuche2.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.constraint.ConstraintLayout;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.example.gouwuche.R;
import com.example.gouwuche2.bean.UserBean;

import java.util.ArrayList;
import java.util.List;

public class ContentAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

private List<UserBean.DataBean> mlist;
private Context mContext;

public ContentAdapter(Context context){
    this.mContext = context;
    mlist = new ArrayList<>();
}

public void setMlist(List<UserBean.DataBean> list) {
    this.mlist = list;
    notifyDataSetChanged();
}

class ViewHolder extends RecyclerView.ViewHolder {

    ImageView icon;
    TextView title,price,jia,jie;
    EditText num;
    CheckBox cb;
    Button button;
    ConstraintLayout layout;
    public ViewHolder(@NonNull View itemView) {
        super(itemView);

        icon = itemView.findViewById(R.id.item_icon);
        title = itemView.findViewById(R.id.item_title);
        price = itemView.findViewById(R.id.item_price);
        jia = itemView.findViewById(R.id.item_jia);
        jie = itemView.findViewById(R.id.item_jian);
        num = itemView.findViewById(R.id.item_num);
        cb = itemView.findViewById(R.id.item_cb);
        button = itemView.findViewById(R.id.jiaru);
        layout = itemView.findViewById(R.id.ll);
    }
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext).inflate(R.layout.shop_item,viewGroup,false);
    return new ContentAdapter.ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
    final ViewHolder holder = (ViewHolder) viewHolder;
    holder.title.setText(mlist.get(i).getTitle());
    holder.price.setText(mlist.get(i).getPrice()+"");
    holder.num.setText(mlist.get(i).getNum()+"");

    String R = "";
    int K = mlist.get(i).getImages().length();
    for(int j=0;j<K;j++)
    {
        if(mlist.get(i).getImages().substring(j,j+1).equals("|"))
        {
            R = mlist.get(i).getImages().substring(j+1,K).trim();
        }
    }
    Glide.with(mContext).load(R).into(holder.icon);

    holder.jie.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int mNum = mlist.get(i).getNum();
            if(mNum>1)
            {
                --mNum;
            }else{
                Toast.makeText(mContext,"商品数量不能少于1",Toast.LENGTH_LONG).show();
            }
            holder.num.setText(mNum+"");
            mlist.get(i).setNum(mNum);

            if(onItemClick!=null)
            {
                onItemClick.success();
            }
        }
    });

    holder.jia.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int mNum = mlist.get(i).getNum();
            mNum++;
            holder.num.setText(mNum+"");
            mlist.get(i).setNum(mNum);

            if(onItemClick!=null)
            {
                onItemClick.success();
            }
        }
    });

    holder.cb.setChecked(mlist.get(i).isCheck());

    holder.cb.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            mlist.get(i).setCheck(holder.cb.isChecked());

            if(onItemClick!=null)
            {
                onItemClick.success();
            }
        }
    });


    holder.button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(onItemLongClick!=null)
            {
                onItemLongClick.success(mlist.get(i).getPid()+"");
            }
        }
    });

    holder.layout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(itemClick!=null)
            {
                itemClick.success();
            }
        }
    });
}

public void selectOrRemoveAll(boolean isAllSelected){
    for (UserBean.DataBean dataBean:mlist)
    {
        dataBean.setCheck(isAllSelected);
    }
    notifyDataSetChanged();
}

@Override
public int getItemCount() {
    return mlist.size();
}

OnItemClick onItemClick;

public void setOnItemClick(OnItemClick onItemClick) {
    this.onItemClick = onItemClick;
}

public interface OnItemClick{
    void success();
}

OnItemLongClick onItemLongClick;

public void setOnItemLongClick(OnItemLongClick onItemLongClick) {
    this.onItemLongClick = onItemLongClick;
}

public interface OnItemLongClick{
    void success(String pid);
}

ItemClick itemClick;

public void setItemClick(ItemClick itemClick) {
    this.itemClick = itemClick;
}

public interface ItemClick{
    void success();
}

}

猜你喜欢

转载自blog.csdn.net/qq_42960779/article/details/85156184