RecyclerView购物车

 Fragment

package com.example.zsd.myapplication0403.frag;

import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ExpandableListView;
import android.widget.TextView;

import com.example.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.adapter.ShopCardAdapter;
import com.example.zsd.myapplication0403.base.BaseFragment;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;
import com.example.zsd.myapplication0403.mvp.MVP;
import com.example.zsd.myapplication0403.presenter.Presenter;
import com.yanxuwen.MyRecyclerview.MyBaseAdapter;

import java.util.HashMap;
import java.util.List;

public class ShopingFragment extends BaseFragment implements MVP.Viewable {

    private Presenter presenter;
    private RecyclerView expandableListView;
    private CheckBox checkBox;
    private TextView sum;
    private List<ShopingCarJson.DataBean.ListBean> childlist;
    private ShopCardAdapter myBaseAdapter;
    private List<ShopingCarJson.DataBean> list;

    @Override
    protected void initView(View view) {
        expandableListView = view.findViewById(R.id.expandlistView);
        checkBox = view.findViewById(R.id.checkboxall);
        sum = view.findViewById(R.id.priceall);
        expandableListView.setLayoutManager(new LinearLayoutManager(getActivity()));

    }
    @Override
    protected void initLinsenter() {

    }
    @Override
    protected int findViewID() {
        return R.layout.shopingfrag;
    }
    @Override
    protected void initData() {
        presenter = new Presenter(this);
        HashMap<String, String> map = new HashMap<>();
        map.put("uid","51");
        presenter.Shoping(map);
    }
    @Override
    public void Succes(Object object) {
        Log.e("tag",object+"");
        final ShopingCarJson json = (ShopingCarJson) object;
        list = json.getData();
        myBaseAdapter = new ShopCardAdapter(getActivity(),json.getData());
        expandableListView.setAdapter(myBaseAdapter);
        myBaseAdapter.notifyDataSetChanged();
        checkBox.setOnCheckedChangeListener(null);
        checkBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int i = 0; i < list.size(); i++) {
                  list.get(i).setCheckBox(checkBox.isChecked());
                    for (int j = 0; j < list.get(i).getList().size(); j++) {
                        list.get(i).getList().get(j).setCheckBox(checkBox.isChecked());
                    }
                }
                getSum();
                myBaseAdapter.notifyDataSetChanged();
            }
        });
        myBaseAdapter.setCallBackGroupLinsenter(new ShopCardAdapter.CallBackGroupLinsenter() {
            @Override
            public void initCheckeds() {
                //获取父条目和字条目的选中状态
                boolean sync = true;
                for (int i = 0; i < list.size(); i++) {
                    sync = sync & list.get(i).isCheckBox();
                    for (int j = 0; j < list.get(i).getList().size(); j++) {
                        sync = sync & list.get(i).getList().get(j).isCheckBox();
                    }
                }
                checkBox.setChecked(sync);
                getSum();
            }
        });

    }

    private void getSum() {
        int sums = 0;
        for (int i = 0; i < list.size(); i++) {
            List<ShopingCarJson.DataBean.ListBean> list1 = this.list.get(i).getList();
            for (int j = 0; j < list1.size(); j++) {
                int defalutNumber = list1.get(j).getDefalutNumber();
                double price = list1.get(j).getPrice();
                if (list1.get(j).isCheckBox()==true) {
                    sums += price * defalutNumber;
                }
            }
        }
        sum.setText(sums+"");
    }

    @Override
    public void Errors(Object object) {
        Log.e("tag",object+"");
    }
}

Adapter

package com.example.zsd.myapplication0403.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.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;

import java.util.List;

/**
 * Created by &{USER} on &{DATE}.
 */
public class ShopCardAdapter extends RecyclerView.Adapter<ShopCardAdapter.MyView> {

    Context context ;
    List<ShopingCarJson.DataBean> list;
    private ShopCardTwoAdapter shopCardTwoAdapter;
    private List<ShopingCarJson.DataBean.ListBean> list1;

    public ShopCardAdapter(Context context, List<ShopingCarJson.DataBean> list) {
        this.context = context;
        this.list = list;
    }
    @NonNull
    @Override
    public ShopCardAdapter.MyView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.iteam_shop,viewGroup,false);
        MyView myView = new MyView(view);
        return myView;
    }
    @Override
    public void onBindViewHolder(@NonNull final ShopCardAdapter.MyView myView, final int i) {
        myView.name_one.setText(list.get(i).getSellerName());
        list1 = list.get(i).getList();
        shopCardTwoAdapter = new ShopCardTwoAdapter(context,list1);
        myView.rvT1.setLayoutManager(new LinearLayoutManager(context));
        myView.rvT1.setAdapter(shopCardTwoAdapter);
        //焦点冲突
        myView.oneCheck.setOnCheckedChangeListener(null);
        myView.oneCheck.setChecked(list.get(i).isCheckBox());
        shopCardTwoAdapter.setCallBackChildChecked(new ShopCardTwoAdapter.CallBackChildChecked() {
            @Override
            public void initChecked() {
                boolean sync = true;
                for (int j = 0; j < list.get(i).getList().size(); j++) {
                    sync = sync&list.get(i).getList().get(j).isCheckBox();
                }
                myView.oneCheck.setChecked(sync);
                shopCardTwoAdapter.notifyDataSetChanged();
                callBackGroupLinsenter.initCheckeds();
            }
        });
        //父条目选中全选框就选中
        myView.oneCheck.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                for (int j = 0; j < list.get(i).getList().size(); j++) {
                    list.get(i).getList().get(j).setCheckBox(myView.oneCheck.isChecked());
                }
                list.get(i).setCheckBox(myView.oneCheck.isChecked());
                notifyDataSetChanged();
                callBackGroupLinsenter.initCheckeds();
            }
        });
        shopCardTwoAdapter.notifyDataSetChanged();
    }

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

    public class MyView extends RecyclerView.ViewHolder {
        private final TextView name_one;
        private final RecyclerView rvT1;
        private final CheckBox oneCheck;
        public MyView(@NonNull View itemView) {
             super(itemView);
             name_one = itemView.findViewById(R.id.name_one);
             rvT1 = itemView.findViewById(R.id.rvT1);
             oneCheck = itemView.findViewById(R.id.oneCheck);
        }
    }
    private CallBackGroupLinsenter callBackGroupLinsenter;

    public void setCallBackGroupLinsenter(CallBackGroupLinsenter callBackGroupLinsenter) {
        this.callBackGroupLinsenter = callBackGroupLinsenter;
    }
    public interface CallBackGroupLinsenter{
        void initCheckeds();
    }
}

Adapter2

package com.example.zsd.myapplication0403.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.CompoundButton;
import android.widget.TextView;

import com.example.zsd.myapplication0403.R;
import com.example.zsd.myapplication0403.bean.ShopingCarJson;
import com.example.zsd.myapplication0403.evnt.View_add_del;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by &{USER} on &{DATE}.
 */
public class ShopCardTwoAdapter extends RecyclerView.Adapter<ShopCardTwoAdapter.MyView> {
    Context context ;
    List<ShopingCarJson.DataBean.ListBean> list;
    public ShopCardTwoAdapter(Context context, List<ShopingCarJson.DataBean.ListBean> list) {
        this.context = context;
        this.list = list;
    }
    @NonNull
    @Override
    public MyView onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.iteams,viewGroup,false);
        MyView myView = new MyView(view);
        return myView;
    }
    @Override
    public void onBindViewHolder(@NonNull final MyView myView, final int i) {
        Uri parse = Uri.parse(list.get(i).getImages());
        myView.img1.setImageURI(parse);
        myView.names3.setText(list.get(i).getTitle());
        myView.names4.setText(list.get(i).getPrice()+"");
        //避免焦点
        myView.twoCheck.setOnCheckedChangeListener(null);
        //
        myView.twoCheck.setChecked(list.get(i).isCheckBox());
        myView.twoCheck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                list.get(i).setCheckBox(isChecked);
                callBackChildChecked.initChecked();
            }
        });
        myView.views_add.setCallBackListener(new View_add_del.CallBackListener() {
            @Override
            public void Firstadd(int number) {
                list.get(i).setDefalutNumber(number);
                callBackChildChecked.initChecked();
            }
            @Override
            public void Firstdel(int number) {
                list.get(i).setDefalutNumber(number);
                callBackChildChecked.initChecked();
            }
        });
    }




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

    public class MyView extends RecyclerView.ViewHolder {
        private final SimpleDraweeView img1;
        private final TextView names3;
        private final TextView names4;
        private final View_add_del views_add;
        private final CheckBox twoCheck;
        public MyView(@NonNull View itemView) {
            super(itemView);
            img1 = itemView.findViewById(R.id.img1);
            names3 = itemView.findViewById(R.id.names3);
            names4 = itemView.findViewById(R.id.names4);
            views_add = itemView.findViewById(R.id.views_add);
            twoCheck = itemView.findViewById(R.id.twoCheck);
        }
    }
    private CallBackChildChecked callBackChildChecked;
    public void setCallBackChildChecked(CallBackChildChecked callBackChildChecked) {
        this.callBackChildChecked = callBackChildChecked;
    }
    public interface CallBackChildChecked{
        void initChecked();
    }
}

自定义view

package com.example.zsd.myapplication0403.evnt;

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

import com.example.zsd.myapplication0403.R;

import java.util.List;

/**
 * Created by &{USER} on &{DATE}.
 */
public class View_add_del extends LinearLayout {


    private Button del;
    private TextView edit_num;
    private Button add;

    private int number;


    public View_add_del(Context context) {
        super(context);
    }

    public View_add_del(final Context context, AttributeSet attrs) {
        super(context, attrs);
        View view = LayoutInflater.from(context).inflate(R.layout.view_add_del,this);
        del = view.findViewById(R.id.del);
        edit_num = view.findViewById(R.id.edit_num);
        add = view.findViewById(R.id.add);

        String s = edit_num.getText().toString();
        number = Integer.parseInt(s);

        add.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                number = number +1;
                Log.e("asa",""+number);
                edit_num.setText(String.valueOf(number));
                CallBackListener.Firstadd(number);
            }
        });

        del.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                number = number-1;
                if(number<1){
                    number=1;
                    edit_num.setText(String.valueOf(number));
                }
                edit_num.setText(String.valueOf(number));
                CallBackListener.Firstdel(number);

            }
        });

    }

    public View_add_del(Context context,AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    //定义接口
    CallBackListener CallBackListener;

    public void setCallBackListener(CallBackListener CallBackListener) {
        this.CallBackListener = CallBackListener;
    }

    public interface CallBackListener {
        public void Firstadd(int number);
        public void Firstdel(int number);
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值