package com.example.app.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import com.example.app.R;
import com.example.app.adapter.CartAdapter;
import com.example.app.callback.CartUICallback;
import com.example.app.contract.CartContract;
import com.example.app.entity.CartBean;
import com.example.app.presenter.CartPresenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class CartActivity extends AppCompatActivity implements CartContract.ICartView, CartUICallback, XRecyclerView.LoadingListener {
private CartPresenter cartPresenter;
private List<CartBean.Cart> carts;
private HashMap<String, String> params;
private int page = 1;//页码
private XRecyclerView xRecyclerView;
private CheckBox checkBox;
private CartAdapter cartAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);
initView();
initData();
}
private void initData() {
cartPresenter = new CartPresenter(this);
carts = new ArrayList<>();
requestData();
}
/**
* 请求购物车数据
*/
private void requestData() {
params = new HashMap<>();
params.put("uid", "51");
params.put("page", 1 + "");
cartPresenter.getCarts(params);
}
/**
* 初始化view
*/
private void initView() {
xRecyclerView = findViewById(R.id.rv);
xRecyclerView.setLoadingListener(this);//设置加载监听器
xRecyclerView.setLoadingMoreEnabled(true);//设置上拉加载
xRecyclerView.setLayoutManager(new LinearLayoutManager(this));
checkBox = findViewById(R.id.checkbox);
//设置全选反选按钮
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {//全选按钮选中
for (CartBean.Cart cart : carts) {
cart.isChecked = true;//设置一级商家选中
for (CartBean.Cart.Product product : cart.list) {
product.isProductisChecked = true;//设置二级商品选中
}
}
} else {//未选中
for (CartBean.Cart cart : carts) {
cart.isChecked = false;//设置一级商家未选中
for (CartBean.Cart.Product product : cart.list) {
product.isProductisChecked = false;//设置二级商品未选中
}
}
}
//通知刷新适配器
cartAdapter.notifyDataSetChanged();
getTotalPrice();
}
});
}
/**
* 获取总价
*/
private void getTotalPrice() {
double totalprice = 0;
//遍历所有商品计算总价
for (CartBean.Cart cart : cartAdapter.getCarts()) {
//得到最新的数据
for (CartBean.Cart.Product product : cart.list) {
if (product.isProductisChecked) {
totalprice += product.price * product.productNum;
}
}
}
//设置总价
checkBox.setText("¥" + totalprice);
}
/**
* 通知底部导航栏总价联动
*/
@Override
public void notifyCart() {
getTotalPrice();
}
@Override
public void success(List<CartBean.Cart> list) {
if (list != null) {
carts = list;
for (CartBean.Cart cart : carts) {
for (CartBean.Cart.Product product : cart.list) {
product.productNum = 1;
}
}
if (page == 1) {//判断
xRecyclerView.refreshComplete();
cartAdapter = new CartAdapter(this, carts);
cartAdapter.setCartCallback(this);
xRecyclerView.setAdapter(cartAdapter);
} else {
//上拉
if (cartAdapter == null) {
cartAdapter = new CartAdapter(this, carts);
cartAdapter.setCartCallback(this);
xRecyclerView.setAdapter(cartAdapter);
} else {
cartAdapter.addData(list);
}
xRecyclerView.loadMoreComplete();
}
}
}
@Override
public void failure(String msg) {
}
/**
* 下拉刷新
*/
@Override
public void onRefresh() {
page = 1;
requestData();
}
/**
* 加载更多
*/
@Override
public void onLoadMore() {
xRecyclerView.loadMoreComplete();
}
}