public class MainActivity extends AppCompatActivity implementsCartContract.ICartView,CartUICallback,XRecyclerView.LoadingListener {    private XRecyclerView xRecyclerView;    private CheckBox checkBox;    private CartPresenter cartPresenter;    private int page = 1;    private CartAdapter cartAdapter;    private List data;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        xRecyclerView = findViewById(R.id.rv);        checkBox = findViewById(R.id.qx);        xRecyclerView.setLoadingListener(this);        xRecyclerView.setLoadingMoreEnabled(true);        xRecyclerView.setLayoutManager(new LinearLayoutManager(this));        initData();    }    private void initData() {        cartPresenter = new CartPresenter(this);        requestData();        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if (isChecked){                    for (CartBean.Cart datum : data) {                        datum.isChecked=true;                        for (CartBean.Cart.Product product : datum.list) {                            product.isProductChecked=true;                        }                    }                }else {                    for (CartBean.Cart datum : data) {                        datum.isChecked=false;                        for (CartBean.Cart.Product product : datum.list) {                            product.isProductChecked=false;                        }                    }                }                cartAdapter.notifyDataSetChanged();                getprice();            }        });    }    private void requestData(){        HashMap params = new HashMap<>();        params.put("uid","71");        params.put("page",page+"");        cartPresenter.getCartList(params);    }    public void getprice() {        double price=0;        for (CartBean.Cart datum : data) {            for (CartBean.Cart.Product product : datum.list) {                if (product.isProductChecked) {                    price += product.price * product.productNum;                }            }        }        checkBox.setText("¥:"+price);    }    @Override    public void success(List list) {        if (list!=null){            data=list;            for (CartBean.Cart datum : data) {                for (CartBean.Cart.Product product : datum.list) {                    product.productNum=1;                }            }        }        //list.remove(0);        if (page==1){            xRecyclerView.refreshComplete();            cartAdapter = new CartAdapter(list, this);            xRecyclerView.setAdapter(cartAdapter);            cartAdapter.setCartUICallback(this);        }else {            if (cartAdapter==null){                cartAdapter = new CartAdapter(list, this);                xRecyclerView.setAdapter(cartAdapter);                cartAdapter.setCartUICallback(this);            }else {                cartAdapter.AddList(list);            }            xRecyclerView.loadMoreComplete();        }    }    @Override    public void notyprice() {        getprice();    }    @Override    public void onRefresh() {        page=1;        requestData();    }    @Override    public void onLoadMore() {        page++;        requestData();    }}
public class CartAdapter extends XRecyclerView.Adapter implements CartCallback {    private List list;    private Context context;    private ProductAdapter productAdapter;    public CartAdapter(List list, Context context) {        this.list = list;        this.context = context;    }    public void AddList(List list) {        if (list!=null){            this.list.addAll(list);            notifyDataSetChanged();        }    }    private CartUICallback cartUICallback;    public void setCartUICallback(CartUICallback cartUICallback) {        this.cartUICallback = cartUICallback;    }    @NonNull    @Override    public MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {        View view = LayoutInflater.from(context).inflate(R.layout.cart_layout_item,viewGroup,false);        return new MyVh(view);    }    @Override    public void onBindViewHolder(@NonNull final MyVh myVh, int i) {        final CartBean.Cart cart = list.get(i);        myVh.tv_title.setText(cart.sellerName);        myVh.xRecyclerView.setLayoutManager(new LinearLayoutManager(context));        productAdapter = new ProductAdapter(cart.list, context);        productAdapter.setCartCallback(this);        myVh.xRecyclerView.setAdapter(productAdapter);        myVh.checkBox.setChecked(cart.isChecked);        myVh.checkBox.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                cart.isChecked=myVh.checkBox.isChecked();                for (CartBean.Cart.Product product : cart.list) {                    product.isProductChecked=cart.isChecked;                }                notifyDataSetChanged();                if (cartUICallback!=null){                    cartUICallback.notyprice();                }            }        });    }    @Override    public int getItemCount() {        return list==null?0:list.size();    }    @Override    public void CartCallback(boolean isChecked, int pos) {        list.get(pos).isChecked=isChecked;        notifyDataSetChanged();        if (cartUICallback!=null){            cartUICallback.notyprice();        }    }    @Override    public void notynums() {        if (cartUICallback!=null){            cartUICallback.notyprice();        }    }}
public interface CartCallback {    void CartCallback(boolean isChecked,int pos);    void notynums();}
public interface CartUICallback {    void notyprice();}
public class ProductAdapter extends XRecyclerView.Adapter {    private List list;    private Context context;    private CartCallback cartCallback;    public void setCartCallback(CartCallback cartCallback) {        this.cartCallback = cartCallback;    }    public ProductAdapter(List list, Context context) {        this.list = list;        this.context = context;    }    @NonNull    @Override    public MyVh onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {        View view = LayoutInflater.from(context).inflate(R.layout.product_layout_item,viewGroup,false);        return new MyVh(view);    }    @Override    public void onBindViewHolder(@NonNull final MyVh myVh, final int i) {        final CartBean.Cart.Product product = list.get(i);        myVh.tv_title.setText(product.title);        myVh.tv_price.setText(product.price+"");        String[] im = product.images.split("\\|");        Glide.with(context).load(im[0]).into(myVh.iv);        myVh.checkBox.setChecked(product.isProductChecked);        myVh.addMinus.setAddminusCallback(new AddMinus.AddminusCallback() {            @Override            public void addCallback(int num) {                product.productNum=num;                if (cartCallback!=null){                    cartCallback.notynums();                }            }        });        myVh.checkBox.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                list.get(i).isProductChecked=myVh.checkBox.isChecked();                if (cartCallback!=null){                    for (CartBean.Cart.Product product1 : list) {                        if (product1.isProductChecked==false){                            cartCallback.CartCallback(false,product1.pos);                            return;                        }                        cartCallback.CartCallback(true,product1.pos);                    }                }            }        });    }}
public class CartBean {    public String code;    public String msg;    public List data;    public class Cart {        public boolean isChecked;//一级列表是否选中标志位        public String sellerName;        public String sellerid;        public List list;        public class Product {            public boolean isProductChecked;//二级            public String title;            public String images;            public double price;            public String pid;            public int pos;            public int productNum =1;        }    }}
public class AddMinus extends LinearLayout {    private TextView tv_jian;    private TextView tv_jia;    private EditText ed_num;    private int num=1;       //重写的方法       private void init(final Context context) {        View view = LayoutInflater.from(context).inflate(R.layout.add_minus_layout,this,true);        tv_jian = view.findViewById(R.id.tv_jian);        tv_jia = view.findViewById(R.id.tv_jia);        ed_num = view.findViewById(R.id.ed_num);        ed_num.setText("1");        tv_jia.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                num++;                ed_num.setText(num+"");                if (addminusCallback!=null){                    addminusCallback.addCallback(num);                }            }        });        tv_jian.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                num--;                if (num==0){                    num=1;                    Toast.makeText(context,"不能再减了 ",Toast.LENGTH_SHORT).show();                }                ed_num.setText(num+"");                if (addminusCallback!=null){                    addminusCallback.addCallback(num);                }            }        });    }    private AddminusCallback addminusCallback;    public void setAddminusCallback(AddminusCallback addminusCallback) {        this.addminusCallback = addminusCallback;    }    public interface AddminusCallback{        void addCallback(int num);    }}

更多相关文章

  1. android 进度条学习
  2. Android(安卓)Parcelable代码自动生成插件 Parcelable code gene
  3. Android(安卓)Service和广播联合更新UI的例子
  4. Android(安卓)ViewPager不可滑动
  5. Android-Module:ToggleButton常用XML属性
  6. 安卓开发_浅谈Android动画(三)
  7. Android(安卓)图表框架
  8. 关于Android中ToolBar返回
  9. Android(安卓)Home按键的监听与屏蔽方式

随机推荐

  1. android 创建快捷方式图标到桌面
  2. Android中对图像进行Base64编码
  3. android监听按钮的点击事件
  4. Android(安卓)canvas.drawArc() 画圆弧
  5. Android(安卓)app获取android.permission
  6. R.stamp Error 1
  7. Android(安卓)动态设置控件高度
  8. Android(安卓)Studio 使用技巧(2)
  9. Android(安卓)应用程序主动请求Vsync
  10. android 震动