购物车3

activity

package bwie.com.wd.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
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.CompoundButton;
import android.widget.TextView;

import com.google.gson.Gson;

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

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

import bwie.com.wd.R;
import bwie.com.wd.adapter.GouAdapter;
import bwie.com.wd.bean.GouBean;
import bwie.com.wd.event.GroupEvent;
import bwie.com.wd.event.SingouEvent;
import bwie.com.wd.event.ZongEvent;
import bwie.com.wd.mvp.presenter.Presenter;

public class FragmentThree extends Fragment {
    private RecyclerView recycle;
    private CheckBox quan;
    private TextView zong;
    private Presenter presenter;
    private GouAdapter gouAdapter;
    private GouBean gouBean;
    private List<GouBean.DataBean> list;
    private TextView zshu;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_three, container, false);
        quan =view. findViewById(R.id.quan);
        zong = view.findViewById(R.id.zong);
        zshu = view.findViewById(R.id.zshu);
        recycle = view.findViewById(R.id.recycle);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
        recycle.setLayoutManager(linearLayoutManager);
        //eventBus
        EventBus.getDefault().register(this);
        //p层
        presenter = new Presenter(this);
        presenter.GouPre();
        quan.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                checkAllOrNot(isChecked);
            }
        });
        return view;
    }
    public void GouView(final String data) {
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                gouBean = gson.fromJson(data, GouBean.class);

                list = gouBean.getData();
                gouAdapter = new GouAdapter(getActivity(), list);
                recycle.setAdapter(gouAdapter);
            }
        });
    }
    //全选
    private void checkAllOrNot(boolean isCheck){
        for (int i = 0; i < list.size(); i++) {
            GouBean.DataBean dataBean = list.get(i);
            dataBean.setCheck(isCheck);
            List<GouBean.DataBean.SpusBean> spus = dataBean.getSpus();
            for (int j = 0; j < spus.size(); j++) {
                GouBean.DataBean.SpusBean spusBean = spus.get(j);
                spusBean.setCheck(isCheck);
            }
        }
        gouAdapter.notifyDataSetChanged();
        Zongjia();
    }
    //总价
    private void Zongjia(){
        int total=0;
        int totalCount=0;
        for (int i = 0; i < list.size(); i++) {
            GouBean.DataBean dataBean = list.get(i);
            List<GouBean.DataBean.SpusBean> spus = dataBean.getSpus();
            for (int j = 0; j < spus.size(); j++) {
                GouBean.DataBean.SpusBean spusBean = spus.get(j);
                if (spusBean.isCheck()){
                    int price = spusBean.getId();
                    int praise_num = spusBean.getPraise_num();
                    total +=price * praise_num;
                    totalCount+=praise_num;
                }
            }
        }
        zong.setText("总价:"+total);
        zshu.setText("商品总数"+totalCount);
    }
    @Subscribe
    public void onZongEvent(ZongEvent zongEvent){
        int gouposition = zongEvent.getGouposition();
        int position = zongEvent.getPosition();
        if (gouposition!=-1){
            GouBean.DataBean dataBean = list.get(gouposition);
            List<GouBean.DataBean.SpusBean> spus = dataBean.getSpus();
            if (position!=-1){
                GouBean.DataBean.SpusBean spusBean = spus.get(position);
                spusBean.setPraise_num(zongEvent.getNewNum());
                if (spusBean.isCheck()){
                    Zongjia();
                }
            }
        }
    }
    @Subscribe
    private void onGroupEvent(GroupEvent groupEvent){
        int groupPostion = groupEvent.getGroupPostion();
        GouBean.DataBean dataBean = list.get(groupPostion);
        dataBean.setCheck(groupEvent.isChecked());
        List<GouBean.DataBean.SpusBean> spus = dataBean.getSpus();
        for (int i = 0; i < spus.size(); i++) {
            GouBean.DataBean.SpusBean spusBean = spus.get(i);
            spusBean.setCheck(groupEvent.isChecked());
        }
        gouAdapter.notifyDataSetChanged();
        Zongjia();
    }
    @Subscribe
    private void onSingleEvent(SingouEvent singouEvent){
        GouBean.DataBean dataBean = list.get(singouEvent.getParentPosition());
        List<GouBean.DataBean.SpusBean> spus = dataBean.getSpus();
        GouBean.DataBean.SpusBean spusBean = spus.get(singouEvent.getSelfPosition());
        spusBean.setCheck(singouEvent.isChecked());
        gouAdapter.notifyDataSetChanged();
        Zongjia();
    }
    @Override
    public void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
}

商家adapter

package bwie.com.wd.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.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

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

import java.util.List;

import bwie.com.wd.R;
import bwie.com.wd.bean.GouBean;
import bwie.com.wd.event.GroupEvent;
import bwie.com.wd.event.ZongEvent;

public class GouAdapter extends RecyclerView.Adapter<GouAdapter.ViewHolder> {
    private Context context;
    private List<GouBean.DataBean> list;
    private List<GouBean.DataBean.SpusBean> list1;
    private int gouposition;

    public GouAdapter(Context context, List<GouBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        final View view = View.inflate(viewGroup.getContext(), R.layout.item_gou_one, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, final int i) {
        viewHolder.name.setText(list.get(i).getName());
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.VERTICAL,false);
        viewHolder.recycle.setLayoutManager(linearLayoutManager);
        for (int j = 0; j < list.size(); j++) {
            list1 = list.get(i).getSpus();
        }
        final GousAdapter gousAdapter = new GousAdapter(context,list1,gouposition);
        viewHolder.recycle.setAdapter(gousAdapter);
        viewHolder.checks.setChecked(list.get(i).isCheck());

        viewHolder.checks.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                for (int j = 0;j<list1.size(); j++){
                    list1.get(j).setCheck(isChecked);
                }
                gousAdapter.notifyDataSetChanged();
            }
        });
       // gouposition = viewHolder.getAdapterPosition();
    }
    @Override
    public int getItemCount() {
        return list.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView name;
        private RecyclerView recycle;
        private CheckBox checks;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.name);
            recycle = itemView.findViewById(R.id.recycle);
            checks = itemView.findViewById(R.id.quan);

        }

    }
}

商品adapter

package bwie.com.wd.adapter;

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

import com.bumptech.glide.Glide;

import org.greenrobot.eventbus.EventBus;

import java.util.List;

import bwie.com.wd.R;
import bwie.com.wd.Zdy;
import bwie.com.wd.bean.GouBean;
import bwie.com.wd.event.SingouEvent;
import bwie.com.wd.event.ZongEvent;

public class GousAdapter extends RecyclerView.Adapter<GousAdapter.ViewHolder> {
    Context context;
    List<GouBean.DataBean.SpusBean> list;
    int gouposition=-1;
    int parentPosition = -1;
    int selfPosition = -1;

    public GousAdapter(Context context, List<GouBean.DataBean.SpusBean> list, int gouposition) {
        this.context = context;
        this.list = list;
        this.gouposition = gouposition;
        this.parentPosition=parentPosition;
        this.selfPosition=selfPosition;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(viewGroup.getContext(), R.layout.item_gou_two, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
        viewHolder.name.setText(list.get(i).getName());
        viewHolder.price.setText(list.get(i).getSkus().get(0).getPrice()+"");
        Glide.with(context).load(list.get(i).getPic_url()).into(viewHolder.img);
        viewHolder.checkbox.setChecked(list.get(i).isCheck());
        viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                EventBus.getDefault().post(new SingouEvent(new SingouEvent(isChecked,parentPosition,selfPosition)));
            }
        });
        viewHolder.zdyview.setOnAddLisener(new Zdy.OnAddLisener() {
            private int position;
            @Override
            public void numLisener(int num) {

                EventBus.getDefault().post(new ZongEvent(gouposition,position,num));
                position = viewHolder.getAdapterPosition();
            }
        });
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        private TextView name;
        private TextView price;
        private ImageView img;
        private CheckBox checkbox;
        private Zdy zdyview;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.name);
            price = itemView.findViewById(R.id.price);
            img = itemView.findViewById(R.id.img);
            checkbox = itemView.findViewById(R.id.checkbox);
            zdyview = itemView.findViewById(R.id.zdyview);
        }
    }
}

自定义加减器

package bwie.com.wd;

import android.content.Context;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class Zdy extends LinearLayout {

    private TextView jia;
    private TextView jian;
    private EditText et_num;
    private int num=1;

    public Zdy(Context context) {
        this(context,null);
    }

    public Zdy(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
    public Zdy(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }
    private void init(final Context context) {
        View view = LayoutInflater.from(context).inflate(R.layout.addview, this,true);

        jia = findViewById(R.id.jia);
        jian = findViewById(R.id.jian);
        et_num = findViewById(R.id.et_num);
        et_num.setText("1");

        jia.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                num = Integer.parseInt(et_num.getText().toString());
                num++;
                et_num.setText(num+"");
                if (onAddLisener !=null){
                    onAddLisener.numLisener(num);
                }
                onAddLisener.numLisener(num);
            }
        });
        jian.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                num = Integer.parseInt(et_num.getText().toString());
                num--;
                if (num==0){
                    num=1;
                    Toast.makeText(context,"不能再减了",Toast.LENGTH_SHORT).show();
                    return;
                }
                et_num.setText(num+"");
                if (onAddLisener !=null){
                    onAddLisener.numLisener(num);
                }
                onAddLisener.numLisener(num);
            }
        });
    }

    private OnAddLisener onAddLisener;

    public interface OnAddLisener{
        void numLisener(int num);
    }

    public void setOnAddLisener(OnAddLisener onAddLisener) {
        this.onAddLisener = onAddLisener;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43916826/article/details/89060685