本文为大家讲解了Android实现购物车的整体页面逻辑,供大家参考,具体内容如下

MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

String url = "http://www.easck.com/product/getCarts";

private ExpandableListView el_cart;

private CheckBox cb_cart_all_select;

private TextView tv_cart_total_price;

private Button btn_cart_pay;

MyAdapter adapter;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

initData();

}

private void initData() {

HashMap map = new HashMap<>();

map.put("uid","71");

OkhtttpUtils.getInstance().doPost(url, map, new OkhtttpUtils.OkCallback() {

@Override

public void onFailure(Exception e) {

}

@Override

public void onResponse(String json) {

CartInfo cartInfo = new Gson().fromJson(json, CartInfo.class);

if ("0".equals(cartInfo.getCode())){

List data = cartInfo.getData();

adapter = new MyAdapter(data);

el_cart.setAdapter(adapter);

//展开二级列表

for(int x=0; x

el_cart.expandGroup(x);

}

adapter.setOnCartListChangeListener(new MyAdapter.onCartListChangeListener() {

@Override

public void onSellerCheckedChange(int i) {

//商家被点击

boolean currentSellerAllProductSelected = adapter.isCurrentSellerAllProductSelected(i);

adapter.changeCurrentSellerAllProductsStatus(i, !currentSellerAllProductSelected);

adapter.notifyDataSetChanged();

//B.刷新底部数据

refreshSelectedAndTotalPriceAndTotalNumber();

}

@Override

public void onProductCheckedChange(int i, int i1) {

//点击商品得checkbox

adapter.changeCurrentProductStatus(i,i1);

adapter.notifyDataSetChanged();

//B.刷新底部数据

refreshSelectedAndTotalPriceAndTotalNumber();

}

@Override

public void onProducNumberChange(int i, int i1, int number) {

//当加减被点击

adapter.changeCurrentProductNumber(i,i1,number);

adapter.notifyDataSetChanged();

//B.刷新底部数据

refreshSelectedAndTotalPriceAndTotalNumber();

}

});

}

}

});

}

//B.刷新checkbox状态和总价和总数量

private void refreshSelectedAndTotalPriceAndTotalNumber() {

//去判断是否所有得商品都被选中

boolean allProductsSelected = adapter.isAllProductsSelected();

//设置给全选checkBox

cb_cart_all_select.setChecked(allProductsSelected);

//计算总价

float totalPrice = adapter.calculateTotalPrice();

tv_cart_total_price.setText("总价 " + totalPrice);

//计算总数量

int totalNumber = adapter.calculateTotalNumber();

btn_cart_pay.setText("去结算(" + totalNumber + ")");

}

//初始化的操作

private void initView() {

el_cart = (ExpandableListView) findViewById(R.id.el_cart);

cb_cart_all_select = (CheckBox) findViewById(R.id.cb_cart_all_select);

tv_cart_total_price = (TextView) findViewById(R.id.tv_cart_total_price);

btn_cart_pay = (Button) findViewById(R.id.btn_cart_pay);

cb_cart_all_select.setOnClickListener(this);

}

@Override

public void onClick(View view) {

switch (view.getId()){

case R.id.cb_cart_all_select:

//底部全选按钮

//时候所有得商品都被选中

boolean allProductsSelected = adapter.isAllProductsSelected();

adapter.changeAllProductStatus(!allProductsSelected);

adapter.notifyDataSetChanged();

//刷新底部数据

refreshSelectedAndTotalPriceAndTotalNumber();

break;

}

}

}

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐