一级购物车列表

适配器


public class DataAdapter extends XRecyclerView.Adapter<DataAdapter.ViewHodder> {
    Context context;
    List<ResultBean> list;

    public DataAdapter(Context context, List<ResultBean> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHodder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.item, viewGroup, false);
        return new ViewHodder(view);

    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHodder viewHodder, final int i) {
        Glide.with(context).load(list.get(i).getPic())
                .diskCacheStrategy(DiskCacheStrategy.ALL)//外部缓存
                .into(viewHodder.image);
         viewHodder.name.setText(list.get(i).getCommodityName());
        viewHodder.price.setText(list.get(i).getPrice()+" ");

        //做关联
        viewHodder.checkbox.setChecked(list.get(i).isCheck());
        //获取商品的数量,把数量赋值给加减器的数量
            int count = list.get(i).getCount();
             viewHodder.addview1.nnn = count;
             viewHodder.addview1.edt.setText(count+" ");//加减器复制
        /*
         * 子checkbox回调监听,通知改变价格
         * */
        viewHodder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                //把商品复选框的状态设置给数据
                list.get(i).setCheck(isChecked);
                mCheckBoxCallBack.ChangeCallBack(list);
            }
        });
        //加减器的加法
        viewHodder.addview1.jia.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                viewHodder.addview1.nnn++;
                viewHodder.addview1.edt.setText(viewHodder.addview1.nnn+"");
                list.get(i).setCount(viewHodder.addview1.nnn);
                mCheckBoxCallBack.ChangeCallBack(list);
            }
        });
        //加减器减法
        viewHodder.addview1.jian.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (viewHodder.addview1.nnn>1){
                    viewHodder.addview1.nnn--;
                    viewHodder.addview1.edt.setText(viewHodder.addview1.nnn+" ");
                    list.get(i).setCount(viewHodder.addview1.nnn);
                    mCheckBoxCallBack.ChangeCallBack(list);
                }else {
                    Toast.makeText(context, "再减买个锤子", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

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


    public class ViewHodder extends RecyclerView.ViewHolder {

        private final ImageView image;
        private final TextView name,price;
        private final CheckBox checkbox;
        private final addView addview1;

        public ViewHodder(@NonNull View itemView) {
            super(itemView);
            image = itemView.findViewById(R.id.item_Image);
            name = itemView.findViewById(R.id.item_Name);
            price = itemView.findViewById(R.id.item_Price);
            checkbox = itemView.findViewById(R.id.mCheck);
            addview1 = itemView.findViewById(R.id.addview);
        }
    }

    //自定义回调
    private CheckBoxCallBack mCheckBoxCallBack;

    public void setmCheckBoxCallBack(CheckBoxCallBack mCheckBoxCallBack) {
        this.mCheckBoxCallBack = mCheckBoxCallBack;
    }

    public interface CheckBoxCallBack{
        void ChangeCallBack(List<ResultBean> list);
    }
}

主页计算



public class MainActivity extends AppCompatActivity implements Contract.IView {

    @BindView(R.id.mRecyler)
    XRecyclerView mRecyler;
    @BindView(R.id.mCheckAll)
    CheckBox mCheckAll;
    @BindView(R.id.mSum)
    TextView mSum;
    private Presenter presenter;
    private ResultBeanDao mResultDao;
    private List<ResultBean> list;
    private DataAdapter dataAdapter;

    private boolean isAutoSet = false;
    private List<ResultBean> tempList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initDao();
        initView();
    }

    //初始化dao
    private void initDao() {
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "green");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster master = new DaoMaster(db);
        DaoSession session = master.newSession();
        mResultDao = session.getResultBeanDao();
    }

    private void initView() {
        //初始化p鞥
        presenter = new Presenter();
        presenter.onAttachView(this);
        presenter.getPrese(this);
        boolean netWorInteNer = oKRtrofit.getInstance().NetWorInteNer(this);
        //没网查询
        if (!netWorInteNer) {
            Log.i("AAAAA", "initView: 没网查询" + "没网");
            QueryBuilder<ResultBean> builder = mResultDao.queryBuilder();
            List<ResultBean> list = builder.orderAsc(ResultBeanDao.Properties.Id).list();

            ArrayList<ResultBean> listbeans = new ArrayList<>();
            for (Object o : list) {
                if (o instanceof ResultBean) {
                    String name = ((ResultBean) o).getCommodityName();
                    int count = ((ResultBean) o).getCount();
                    String pic = ((ResultBean) o).getPic();
                    int price = ((ResultBean) o).getPrice();
                    ResultBean bean = new ResultBean();
                    bean.setPrice(price);
                    bean.setPic(pic);
                    bean.setCommodityName(name);
                    bean.setCount(count);
                    listbeans.add(bean);
                }
            }
            DataAdapter dataAdapter = new DataAdapter(this, listbeans);
            mRecyler.setAdapter(dataAdapter);
            GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 1);
            mRecyler.setLayoutManager(gridLayoutManager);
        }
    }

    @Override
    public void getView(String data) {
        Gson gson = new Gson();//解析
        JsonBean jsonBean = gson.fromJson(data, JsonBean.class);
        list = jsonBean.getResult();
        dataAdapter = new DataAdapter(this, list);
        mRecyler.setAdapter(dataAdapter);
        GridLayoutManager gridLayoutManager = new GridLayoutManager(this, 1);
        mRecyler.setLayoutManager(gridLayoutManager);
        //加载数据的同时入库操作
        for (int i = 0; i < list.size(); i++) {
            ResultBean bean = list.get(i);
            bean.setCommodityName(bean.getCommodityName());
            bean.setCount(bean.getCount());
            bean.setPic(bean.getPic());
            bean.setPrice(bean.getPrice());
            bean.setId(i);
            mResultDao.insertOrReplace(bean);//入库
        }
        initAdapter();
        initCheckListener();//总价的全选反选
    }

    private void initAdapter(){
        //改变监听
        dataAdapter.setmCheckBoxCallBack(new DataAdapter.CheckBoxCallBack() {
            @Override
            public void ChangeCallBack(List<ResultBean> list) {
                tempList = list;
                isAutoSet = true;
                boolean isCheckAll = true;
                double price = 0.0;
                for (int i = 0; i < list.size(); i++) {
                    ResultBean resultBean = list.get(i);
                    if (resultBean.isCheck()) {
                        int count = resultBean.getCount();
                        int pricebena = resultBean.getPrice();
                        price += count * pricebena;
                        mSum.setText(price+" ");
                    }
                }
                for (int j = 0; j < list.size(); j++) {
                    ResultBean resultBean = list.get(j);
                    boolean isCheck = resultBean.getIsCheck();
                    if (!isCheck){
                        isCheckAll = false;
                        break;
                    }
                }
                mCheckAll.setChecked(isCheckAll);
            }

        });
    }
    //总价的全选反选
    private void initCheckListener() {
        mCheckAll.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isAutoSet = false;
                checkMethod();
            }
        });
        mCheckAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                checkMethod();
            }
        });
    }
    private void checkMethod(){
        if (mCheckAll.isChecked()){
            for (int i = 0; i < list.size(); i++) {
                ResultBean resultBean = list.get(i);
                resultBean.setCheck(true);
            }
        }else if(!isAutoSet){
            for (int i = 0; i < list.size(); i++) {
            ResultBean resultBean = list.get(i);
            resultBean.setCheck(false);
            }
        }
        setPrice();
        dataAdapter.notifyDataSetChanged();

    }
    /*
     * 全选时获取总价
     * */
    private void setPrice() {
        if(tempList == null)
        tempList = new ArrayList<>();
        double total = 0.0 ;
        for (int i = 0; i < tempList.size(); i++) {
            ResultBean resultBean = list.get(i);
            int count = resultBean.getCount();
            int price = resultBean.getPrice();
            if(resultBean.isCheck()) {
                total += count * price;
            }
        }
            mSum.setText(total+" ");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.onDeach();
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值