2022-11-17学习内容
1.案例-购物车-购物车列表展示
1.1ShoppingCartActivity.java
package com.example.chapter06; import androidx.appcompat.app.AppCompatActivity; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.example.chapter06.database.ShoppingDBHelper; import com.example.chapter06.entity.CartInfo; import com.example.chapter06.entity.GoodsInfo; import java.util.HashMap; import java.util.List; import java.util.Map; public class ShoppingCartActivity extends AppCompatActivity implements View.OnClickListener { private TextView tv_count; private LinearLayout ll_cart; private ShoppingDBHelper mDBHelper; // 声明一个购物车中的商品信息列表 private List<CartInfo> mCartList; // 声明一个根据商品编号查找商品信息的映射,把商品信息缓存起来,这样不用每一次都查询数据库 private Map<Integer, GoodsInfo> mGoodsMap = new HashMap<>(); private TextView tv_total_price; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping_cart); TextView tv_title = findViewById(R.id.tv_title); tv_title.setText("购物车"); ll_cart = findViewById(R.id.ll_cart); tv_total_price = findViewById(R.id.tv_total_price); tv_count = findViewById(R.id.tv_count); tv_count.setText(String.valueOf(MyApplication.getInstance().goodsCount)); mDBHelper = ShoppingDBHelper.getInstance(this); findViewById(R.id.iv_back).setOnClickListener(this); } @Override protected void onResume() { super.onResume(); showCart(); } // 展示购物车中的商品列表 private void showCart() { // 移除下面的所有子视图 ll_cart.removeAllViews(); // 查询购物车数据库中所有的商品记录 mCartList = mDBHelper.queryAllCartsInfo(); if (mCartList.size() == 0) { return; } for (CartInfo info : mCartList) { // 根据商品编号查询商品数据库中的商品记录 GoodsInfo goods = mDBHelper.queryGoodsInfoById(info.goodsId); mGoodsMap.put(info.goodsId, goods); // 获取布局文件item_cart.xml的根视图 View view = LayoutInflater.from(this).inflate(R.layout.item_cart, null); ImageView iv_thumb = view.findViewById(R.id.iv_thumb); TextView tv_name = view.findViewById(R.id.tv_name); TextView tv_desc = view.findViewById(R.id.tv_desc); TextView tv_count = view.findViewById(R.id.tv_count); TextView tv_price = view.findViewById(R.id.tv_price); TextView tv_sum = view.findViewById(R.id.tv_sum); iv_thumb.setImageURI(Uri.parse(goods.picPath)); tv_name.setText(goods.name); tv_desc.setText(goods.description); tv_count.setText(String.valueOf(info.count)); tv_price.setText(String.valueOf((int)goods.price)); // 设置商品总价 tv_sum.setText(String.valueOf((int)info.count * goods.price)); // 往购物车列表添加该商品行 ll_cart.addView(view); } // 重新计算购物车中的商品总金额 refreshTotalPrice(); } // 重新计算购物车中的商品总金额 private void refreshTotalPrice() { int totalPrice = 0; for (CartInfo info : mCartList) { GoodsInfo goods = mGoodsMap.get(info.goodsId); totalPrice += goods.price * info.count; } tv_total_price.setText(String.valueOf(totalPrice)); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_back: // 点击了返回图标 // 关闭当前页面 finish(); break; } } }
1.2效果: