iew物车首页布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:context=".CartActivity">
<com.jcodecraeer.xrecyclerview.XRecyclerView
android:id="@+id/cartGV"
android:layout_above="@+id/cart_bottom_layout"
android:layout_alignParentTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<RelativeLayout
android:id="@+id/cart_bottom_layout"
android:padding="5dp"
android:background="@android:color/darker_gray"
android:layout_alignParentBottom="true"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<CheckBox
android:layout_centerVertical="true"
android:id="@+id/allCheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/totalpriceTv"
android:textColor="#ffffff"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/allCheckbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="总价:"/>
<Button
android:id="@+id/buy"
android:onClick="buy"
android:layout_alignParentRight="true"
android:text="去结算"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
</RelativeLayout>
=========================================================================
购物车Activity
package com.example.kson.cart1603bdemo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;
import com.example.kson.cart1603bdemo.adapter.CartAdapter;
import com.example.kson.cart1603bdemo.adapter.CartAllCheckboxListener;
import com.example.kson.cart1603bdemo.bean.CartBean;
import com.example.kson.cart1603bdemo.common.Constants;
import com.example.kson.cart1603bdemo.presenter.CartPresenter;
import com.example.kson.cart1603bdemo.utils.SpaceItemDecoration;
import com.example.kson.cart1603bdemo.view.IcartView;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.LinkedTransferQueue;
public class CartActivity extends AppCompatActivity implements IcartView, CartAllCheckboxListener {
private CartPresenter cartPresenter;
private XRecyclerView xRecyclerView;
private CartAdapter cartAdapter;
private List<CartBean.DataBean> list;
private CheckBox allCheckbox;
private TextView totalPriceTv;
private int page = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
initView();
initData();
}
/**
* 初始化view
*/
private void initView() {
list = new ArrayList<>();
xRecyclerView = findViewById(R.id.cartGV);
allCheckbox = findViewById(R.id.allCheckbox);
//设置线性布局管理器,listview的列表样式
xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
totalPriceTv = findViewById(R.id.totalpriceTv);
xRecyclerView.setLoadingMoreEnabled(true);//支持加载更多
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {//下拉刷新
page = 1;
loadData();//子线程
// xRecyclerView.refreshComplete();
}
@Override
public void onLoadMore() {//加载更多
page++;
loadData();
// xRecyclerView.loadMoreComplete();
}
});
//设置点击事件
allCheckbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (allCheckbox.isChecked()) {//
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setSelected(true);
for (int i1 = 0; i1 < list.get(i).getList().size(); i1++) {
list.get(i).getList().get(i1).setSelected(true);
}
}
}
} else {
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
list.get(i).setSelected(false);
for (int i1 = 0; i1 < list.get(i).getList().size(); i1++) {
list.get(i).getList().get(i1).setSelected(false);
}
}
}
// totalPrice = 0;
}
cartAdapter.notifyDataSetChanged();//全部刷新
totalPrice();
}
});
}
/**
* 初始化数据
*/
private void initData() {
loadData();
}
/**
* 请求数据
*/
private void loadData() {
HashMap<String, String> params = new HashMap<>();
params.put("uid", "71");
params.put("page",page+"");
cartPresenter = new CartPresenter(this);
cartPresenter.getCarts(params, Constants.GETCARTS);
}
/**
* 刷新购物车列表
*
* @param cartBean
*/
@Override
public void success(CartBean cartBean) {
// TODO: 2018/8/21 展示列表数据
if (cartBean != null && cartBean.getData() != null) {
if (page==1){
list = cartBean.getData();
cartAdapter = new CartAdapter(this, list);
xRecyclerView.setAdapter(cartAdapter);
xRecyclerView.refreshComplete();//把下拉刷新的进度view隐藏掉
}else {
if (cartAdapter!=null){
cartAdapter.addPageData(cartBean.getData());
}
xRecyclerView.loadMoreComplete();//
}
cartAdapter.setCartAllCheckboxListener(this);
}
}
/**
* 失败提示
*
* @param msg
*/
@Override
public void failure(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}
/**
* 去结算
*
* @param view
*/
public void buy(View view) {
}
/**
* 全选按钮是否选中的回调
*/
@Override
public void notifyAllCheckboxStatus() {
StringBuilder stringBuilder = new StringBuilder();
if (cartAdapter != null) {
for (int i = 0; i < cartAdapter.getCartList().size(); i++) {
stringBuilder.append(cartAdapter.getCartList().get(i).isSelected());
for (int i1 = 0; i1 < cartAdapter.getCartList().get(i).getList().size(); i1++) {
stringBuilder.append(cartAdapter.getCartList().get(i).getList().get(i1).isSelected());
}
}
}
System.out.println("sb=====" + stringBuilder.toString());
//truetruefalsetruefalse
if (stringBuilder.toString().contains("false")) {
allCheckbox.setChecked(false);
// totalPrice = 0;
} else {
allCheckbox.setChecked(true);
}
totalPrice();//计算总价
}
/**
* 计算总价
*/
private void totalPrice() {
double totalPrice = 0;
for (int i = 0; i < cartAdapter.getCartList().size(); i++) {
for (int i1 = 0; i1 < cartAdapter.getCartList().get(i).getList().size(); i1++) {
//计算总价的关键代码块
if (cartAdapter.getCartList().get(i).getList().get(i1).isSelected()) {
CartBean.DataBean.ListBean listBean = cartAdapter.getCartList().get(i).getList().get(i1);
totalPrice += listBean.getBargainPrice() * listBean.getTotalNum();
}
}
}
totalPriceTv.setText("总价:¥"+totalPrice);
}
}
===========CartAdapter ============================= ========================
购物车Adapter
package com.example.kson.cart1603bdemo.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.kson.cart1603bdemo.R;
import com.example.kson.cart1603bdemo.bean.CartBean;
import java.util.List;
/**
* Author:kson
* E-mail:19655910@qq.com
* Time:2018/08/21
* Description:
*/
public class CartAdapter extends RecyclerView.Adapter<CartAdapter.CartViewHolder> implements CartCheckListener {
private Context mContext;
private List<CartBean.DataBean> cartList;
private CartAllCheckboxListener allCheckboxListener;
public CartAdapter(Context context, List<CartBean.DataBean> list) {
mContext = context;
cartList = list;
}
public void addPageData(List<CartBean.DataBean> list){
if (cartList!=null){
cartList.addAll(list);
notifyDataSetChanged();
}
}
//暴露给购物车页面进行回调
public void setCartAllCheckboxListener(CartAllCheckboxListener cartAllCheckboxListener) {
allCheckboxListener = cartAllCheckboxListener;
}
@NonNull
@Override
public CartViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(mContext).inflate(R.layout.cart_item_layout, parent, false);
CartViewHolder viewHolder = new CartViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(@NonNull final CartViewHolder holder, final int position) {
final CartBean.DataBean bean = cartList.get(position);
holder.nameTv.setText(bean.getSellerName());
holder.checkBox.setChecked(bean.isSelected());//根据bean对象的ischecked属性,动态设置选中状态
// System.out.println("ischecked:" + bean.isChecked());
// holder.checkBox.setChecked(bean.isChecked());
holder.productXRV.setLayoutManager(new LinearLayoutManager(mContext));
final ProductAdapter productAdapter = new ProductAdapter(mContext, bean.getList());
holder.productXRV.setAdapter(productAdapter);
productAdapter.setCheckListener(this);
for (int i = 0; i < bean.getList().size(); i++) {
if (!bean.getList().get(i).isSelected()){
holder.checkBox.setChecked(false);
break;//跳出循环
}else{
holder.checkBox.setChecked(true);
}
}
//设置商家的checkbox点击事件,逻辑:勾选则子列表全部勾选,取消则全部取消
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public