RecyclerView嵌套实现购物车

//商家adapter

package com.bw.lixianfeng.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.bw.lixianfeng.R;
import com.bw.lixianfeng.bean.ShopCarBean;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import java.util.List;

public class ShopCarAdapter extends XRecyclerView.Adapter {
    private List<ShopCarBean.DataBean> list;
    private Context context;

    public ShopCarAdapter(List<ShopCarBean.DataBean> list) {
        this.list = list;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        context = viewGroup.getContext();
        if (i==1){
            View view = LayoutInflater.from(context).inflate(R.layout.layout_adapter, viewGroup, false);
            ViewHolder viewHolder=new ViewHolder(view);
            return viewHolder;
        }else {
            View view = LayoutInflater.from(context).inflate(R.layout.layout_adapter2, viewGroup, false);
            ViewHolder2 viewHolder=new ViewHolder2(view);
            return viewHolder;
        }

    }

    public List<ShopCarBean.DataBean> getList() {
        return list;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
        int itemViewType = getItemViewType(i);
        if(itemViewType==1){
            ViewHolder viewHolder1= (ViewHolder) viewHolder;
            viewHolder1.name.setText(list.get(i).getSellerName());
            viewHolder1.checkBox.setChecked(false);
            List<ShopCarBean.DataBean.ListBean> listBean = list.get(i).getListBean();
            viewHolder1.xRecyclerView.setLayoutManager(new LinearLayoutManager(context));
            ShopCarChildAdapter shopCarChildAdapter=new ShopCarChildAdapter(listBean);
            ((ViewHolder) viewHolder).xRecyclerView.setAdapter(shopCarChildAdapter);
        }else {
            ViewHolder2 viewHolder2= (ViewHolder2) viewHolder;
            viewHolder2.homeId.setText(list.get(i).getSellerid());
        }
    }

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

    @Override
    public int getItemViewType(int position) {
        List<ShopCarBean.DataBean.ListBean> listBean = list.get(position).getListBean();
        if(listBean.size()==0){
            return 0;
        }else {
            return 1;
        }
    }
    public class ViewHolder extends XRecyclerView.ViewHolder{

        private final CheckBox checkBox;
        private final TextView name;
        private final XRecyclerView xRecyclerView;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            checkBox = itemView.findViewById(R.id.checkBox);
            name = itemView.findViewById(R.id.name);
            xRecyclerView = itemView.findViewById(R.id.xRecyclerView);
        }
    }
    public class ViewHolder2 extends XRecyclerView.ViewHolder{

        private final TextView homeId;

        public ViewHolder2(@NonNull View itemView) {
            super(itemView);
            homeId = itemView.findViewById(R.id.homeId);
        }
    }

}

//商品adapter

package com.bw.lixianfeng.adapter;

import android.content.Context;
import android.net.Uri;
import android.support.annotation.NonNull;
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 android.widget.Toast;

import com.bw.lixianfeng.AdapterEvent;
import com.bw.lixianfeng.AddSubEvent;
import com.bw.lixianfeng.R;
import com.bw.lixianfeng.bean.JiaBean;
import com.bw.lixianfeng.bean.JianBean;
import com.bw.lixianfeng.bean.ShopCarBean;
import com.facebook.drawee.view.SimpleDraweeView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

public class ShopCarChildAdapter extends XRecyclerView.Adapter<ShopCarChildAdapter.ViewHolder> {
    private List<ShopCarBean.DataBean.ListBean> listBean;
    private Context context;
    private ShopCarBean.DataBean.ListBean listBean1;

    public ShopCarChildAdapter(List<ShopCarBean.DataBean.ListBean> listBean) {
        this.listBean = listBean;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        context = viewGroup.getContext();
        View view = LayoutInflater.from(context).inflate(R.layout.layout_adapter_child, viewGroup, false);
        ViewHolder viewHolder=new ViewHolder(view);
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
        listBean1 = listBean.get(i);
        int selected = listBean.get(i).getSelected();
        if(selected==0){
//            listBean1.setSelected(1);
            viewHolder.checkChildBox.setChecked(false);
        }else {
//            listBean1.setSelected(0);
            viewHolder.checkChildBox.setChecked(true);
        }
        viewHolder.childName.setText(listBean1.getSubhead());
        viewHolder.price.setText(listBean1.getPrice()+"");
        viewHolder.num.setText(""+listBean1.getNum());
        String images = listBean1.getImages();
        String[] split = images.split("\\|");
        Uri uri=Uri.parse(split[0]);
        viewHolder.simpleDraweeView.setImageURI(uri);
        viewHolder.checkChildBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EventBus.getDefault().post(new AdapterEvent(listBean1.getSelected()));
            }
        });
        viewHolder.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                JianBean jianBean=new JianBean(listBean1.getPscid(),listBean1.getSellerid());
                EventBus.getDefault().post(jianBean);
            }
        });
        viewHolder.add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                JiaBean jiaBean=new JiaBean(listBean1.getPscid(),listBean1.getSellerid());
                EventBus.getDefault().post(jiaBean);
            }
        });
        viewHolder.num.setText(listBean1.getNum()+"");
    }

    @Override
    public int getItemCount() {
        return listBean.size();
    }
    public class ViewHolder extends XRecyclerView.ViewHolder{

        private final TextView childName;
        private final TextView price;
        private final CheckBox checkChildBox;
        private final SimpleDraweeView simpleDraweeView;
        private final TextView jian;
        private final TextView num;
        private final TextView add;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            childName = itemView.findViewById(R.id.childName);
            price = itemView.findViewById(R.id.price);
            checkChildBox = itemView.findViewById(R.id.checkChildBox);
            simpleDraweeView = itemView.findViewById(R.id.simpleDraweeView);
            jian = itemView.findViewById(R.id.jian);
            num = itemView.findViewById(R.id.num);
            add = itemView.findViewById(R.id.add);
        }
    }
}

//activity代码

package com.bw.lixianfeng;

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

import com.bw.lixianfeng.adapter.ShopCarAdapter;
import com.bw.lixianfeng.bean.JiaBean;
import com.bw.lixianfeng.bean.JianBean;
import com.bw.lixianfeng.bean.ShopCarBean;
import com.bw.lixianfeng.present.ShopCarPresent;
import com.bw.lixianfeng.view.ShopCarView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.Unbinder;

public class MainActivity extends AppCompatActivity implements ShopCarView {

    @BindView(R.id.xRecyclerView)
    XRecyclerView xRecyclerView;
    @BindView(R.id.heJi)
    TextView heJi;
    @BindView(R.id.checkboxAll)
    CheckBox checkboxAll;
    private Unbinder bind;
    private List<ShopCarBean.DataBean> list;
    private ShopCarPresent shopCarPresent;
    private ShopCarAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        EventBus.getDefault().register(this);
        bind = ButterKnife.bind(this);
        initData();
        //全选
        checkboxAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < list.size(); i++) {
                    boolean isChecked = list.get(i).isChecked();
                    if(isChecked){
                        list.get(i).setChecked(false);
                    }else {
                        list.get(i).setChecked(true);
                    }
                    List<ShopCarBean.DataBean.ListBean> listBean = list.get(i).getListBean();
                    for (int j = 0; j < listBean.size(); j++) {
                        int selected = listBean.get(j).getSelected();
                        if(selected==1){
                            listBean.get(j).setSelected(0);
                        }else {
                            listBean.get(j).setSelected(1);
                        }
                    }
                }
                adapter.notifyDataSetChanged();
                getTotal();
            }
        });
    }
    private void initData() {
        shopCarPresent = new ShopCarPresent(this);
        shopCarPresent.getShopCar();
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void setAddMethod(JiaBean jiaBean){
        List<ShopCarBean.DataBean> list = adapter.getList();
        for (int i = 0; i < list.size(); i++) {
            ShopCarBean.DataBean dataBean = list.get(i);
            String sellerid = dataBean.getSellerid();
            int i1 = Integer.parseInt(sellerid);
            if (i1==jiaBean.getGroupId()){
                List<ShopCarBean.DataBean.ListBean> listBean = dataBean.getListBean();
                for (int i2 = 0; i2 < listBean.size(); i2++) {
                    ShopCarBean.DataBean.ListBean listBean1 = listBean.get(i2);
                    int pscid = listBean1.getPscid();
                    if (pscid==jiaBean.getChildId()) {
                        int num = listBean1.getNum();
                        listBean1.setNum(num+1);
                    }
                }
            }
        }
        adapter.notifyDataSetChanged();
        getTotal();
    }
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void setJianMethod(JianBean jianBean){
        List<ShopCarBean.DataBean> list = adapter.getList();
        for (int i = 0; i < list.size(); i++) {
            ShopCarBean.DataBean dataBean = list.get(i);
            String sellerid = dataBean.getSellerid();
            int i1 = Integer.parseInt(sellerid);
            if(i1==jianBean.getGroupId()){
                List<ShopCarBean.DataBean.ListBean> listBean = dataBean.getListBean();
                for (int i2 = 0; i2 < listBean.size(); i2++) {
                    ShopCarBean.DataBean.ListBean listBean1 = listBean.get(i2);
                    int pscid = listBean1.getPscid();
                    if (pscid==jianBean.getChildId()){
                        int num = listBean1.getNum();
                        listBean1.setNum(num-1);
                    }
                }
            }
        }
        adapter.notifyDataSetChanged();
        getTotal();
    }
    @Override
    public void onSuccess(List<ShopCarBean.DataBean> list2) {
        list = list2;
        xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new ShopCarAdapter(list);
        xRecyclerView.setAdapter(adapter);

    }

    @Override
    public void onFailed(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_SHORT);
    }

    private void getTotal() {
        double total = 0;
        for (int i = 0; i < list.size(); i++) {
            boolean checked = list.get(i).isChecked();
            if (checked) {
                List<ShopCarBean.DataBean.ListBean> listBean = list.get(i).getListBean();
                for (int j = 0; j < listBean.size(); j++) {
                    double bargainPrice = listBean.get(j).getBargainPrice();
                    total += bargainPrice * listBean.get(j).getNum();
                }
            }
        }
        heJi.setText("合计:¥" + total);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        bind.unbind();
        shopCarPresent.onDestroy();
        EventBus.getDefault().unregister(this);
    }
}

//jiabean(event)

package com.bw.lixianfeng.bean;

public class JiaBean {
    int childId;
    int groupId;

    public JiaBean(int childId, int groupId) {
        this.childId = childId;
        this.groupId = groupId;
    }

    public int getChildId() {
        return childId;
    }

    public void setChildId(int childId) {
        this.childId = childId;
    }

    public int getGroupId() {Recycler
        return groupId;
    }

    public void setGroupId(int groupId) {
        this.groupId = groupId;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值