仿京东购物车(代码)

该博客详细介绍了如何实现类似京东购物车的功能,包括使用两个适配器、两个回调接口以及自定义View,同时涉及到Bean对象的使用。
摘要由CSDN通过智能技术生成

activity

package com.example.shop;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

import com.google.gson.Gson;

import java.io.IOException;
import java.util.List;

import adapter.AllCheckBoxLisenter;
import adapter.Myadapter1;
import butterknife.BindView;
import butterknife.ButterKnife;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class MainActivity extends AppCompatActivity implements AllCheckBoxLisenter {

    @BindView(R.id.shop_recy)
    RecyclerView shopRecy;
    @BindView(R.id.shop_check)
    CheckBox shopCheck;
    @BindView(R.id.shop_button)
    Button shopButton;
    @BindView(R.id.shop_text)
    TextView shopText;
    private String url="https://www.zhaoapi.cn/product/getCarts?uid=71";
    Myadapter1 myadapter1;
    List<ShopBean.DataBean> data;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initData();
        isCK();
    }

    private void initData() {
      HttpUtil.getinstance().getOK(url, new Callback() {
          @Override
          public void onFailure(Call call, IOException e) {
              e.getMessage().toString();
          }

          @Override
          public void onResponse(final Call call, Response response) throws IOException {
              final String msg = response.body().string();
              runOnUiThread(new Runnable() {
              @Override
              public void run() {
                  Gson gson=new Gson();
                  ShopBean shopBean = gson.fromJson(msg, ShopBean.class);
                  data = shopBean.getData();
                   myadapter1=new Myadapter1(MainActivity.this,data);
                  shopRecy.setLayoutManager(new LinearLayoutManager(MainActivity.this));
                  shopRecy.setAdapter(myadapter1);
                  myadapter1.setAllCheckBoxLisenter(MainActivity.this);
              }
          });
          }
      });
    }
   public void isCK(){
        shopCheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            if (shopCheck.isChecked()){
                for(int i=0;i<data.size();i++){
                    data.get(i).setSelect(true);
                    for (int i1=0;i1<data.get(i).getList().size();i1++){
                        data.get(i).getList().get(i1).setSelect(true);
                    }
                }
            }else {
                for(int i=0;i<data.size();i++) {
                    data.get(i).setSelect(false);
                    for (int i1 = 0; i1 < data.get(i).getList().size(); i1++) {
                        data.get(i).getList().get(i1).setSelect(false);
                    }
                }
            }
            myadapter1.notifyDataSetChanged();
            getPrices();
            }
        });
    }

    @Override
    public void notifyAllCheckboxStatus() {
        StringBuilder stringBuilder = new StringBuilder();
        if (myadapter1 != null) {
            for (int i = 0; i < myadapter1.getCartList().size(); i++) {

                stringBuilder.append(myadapter1.getCartList().get(i).isSelect());

                for (int i1 = 0; i1 < myadapter1.getCartList().get(i).getList().size(); i1++) {

                    stringBuilder.append(myadapter1.getCartList().get(i).getList().get(i1).isSelect());

                }
            }
        }


        if (stringBuilder.toString().contains("false")) {
            shopCheck.setChecked(false);
//            totalPrice = 0;
        } else {
            shopCheck.setChecked(true);
        }
        getPrices();
    }
    /**
     * 总价
     */
    public void getPrices(){
        int dataPrice=0;
        for (int i=0;i<myadapter1.getCartList().size();i++){
           for(int i1=0;i1<myadapter1.getCartList().get(i).getList().size();i1++){
              if (myadapter1.getCartList().get(i).getList().get(i1).isSelect()){
                  ShopBean.DataBean.ListBean listBean = myadapter1.getCartList().get(i).getList().get(i1);
                dataPrice+=listBean.getBargainPrice()*listBean.getTotalNum();
              }
           }
        }
        shopText.setText("总价是: ¥"+dataPrice);
    }
}

适配器1

package adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.TextView;

import com.example.shop.R;
import com.example.shop.ShopBean;

import java.util.List;

public class Myadapter1 extends RecyclerView.Adapter<Myadapter1.Myholder> implements CartCheckLisenter{
    private Context context;
    private List<ShopBean.DataBean> list;
    private AllCheckBoxLisenter allCheckBoxLisenter;
    public Myadapter1(Context context, List<ShopBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    //暴露给购物车页面进行回调
    public void setAllCheckBoxLisenter(AllCheckBoxLisenter allCheckBoxLisenter){
        this.allCheckBoxLisenter=allCheckBoxLisenter;
    }
    @NonNull
    @Override
    public Myholder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.mybase1,viewGroup,false);
        Myholder myholder=new Myholder(view);
        return myholder;
    }

    @Override
    public void onBindViewHolder(@NonNull final Myholder myholder, final int i) {
        final ShopBean.DataBean bean = list.get(i);
        myholder.textView.setText(bean.getSellerName());
        myholder.recyclerView.setLayoutManager(new LinearLayoutManager(context));
        Myadapter2 myadapter2=new Myadapter2(context,bean.getList());
        myholder.recyclerView.setAdapter(myadapter2);
        //根据bean对象的ischecked属性,动态设置选中状态
        myholder.checkBox.setChecked(bean.isSelect());
        myadapter2.setCartCheckLisenter(this);
        for (int m=0;m<bean.getList().size();m++){
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值