用Android实现商品详情页。 要求: 1. 点击某一个商品进入本商品的详情页,详情页数据包括商品图片、商品名称、商品价格、该商品的详细介绍。 2. 商品详情页底部包含一个“购买”按钮,点击购买后,跳转到购物车页面。 3. 购物车页面可实现商品数量的增减、商品的删除以及总价格计算功能。给出详细代码,adapter要在新建类中,使用listview
时间: 2024-02-16 18:05:19 浏览: 169
好的,以下是实现商品详情页和购物车页面的代码:
商品详情页:
```java
public class ProductDetailActivity extends AppCompatActivity {
private ImageView ivProduct;
private TextView tvName;
private TextView tvPrice;
private TextView tvDescription;
private Button btnBuy;
private Product product;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_product_detail);
// 获取上一个页面传递过来的商品对象
product = (Product) getIntent().getSerializableExtra("product");
// 初始化控件
ivProduct = findViewById(R.id.iv_product);
tvName = findViewById(R.id.tv_name);
tvPrice = findViewById(R.id.tv_price);
tvDescription = findViewById(R.id.tv_description);
btnBuy = findViewById(R.id.btn_buy);
// 显示商品信息
ivProduct.setImageResource(product.getImage());
tvName.setText(product.getName());
tvPrice.setText(String.format("¥%.2f", product.getPrice()));
tvDescription.setText(product.getDescription());
// 点击购买按钮跳转到购物车页面
btnBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(ProductDetailActivity.this, ShoppingCartActivity.class);
startActivity(intent);
}
});
}
}
```
购物车页面:
```java
public class ShoppingCartActivity extends AppCompatActivity {
private ListView lvCart;
private TextView tvTotalPrice;
private Button btnCheckout;
private List<CartItem> cartItems;
private CartItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shopping_cart);
// 初始化控件
lvCart = findViewById(R.id.lv_cart);
tvTotalPrice = findViewById(R.id.tv_total_price);
btnCheckout = findViewById(R.id.btn_checkout);
// 初始化购物车数据
cartItems = new ArrayList<>();
cartItems.add(new CartItem(new Product("商品1", R.drawable.product1, 10.0, "这是商品1的详细介绍"), 2));
cartItems.add(new CartItem(new Product("商品2", R.drawable.product2, 20.0, "这是商品2的详细介绍"), 3));
cartItems.add(new CartItem(new Product("商品3", R.drawable.product3, 30.0, "这是商品3的详细介绍"), 1));
// 计算总价
double totalPrice = 0;
for (CartItem cartItem : cartItems) {
totalPrice += cartItem.getProduct().getPrice() * cartItem.getCount();
}
tvTotalPrice.setText(String.format("总价:¥%.2f", totalPrice));
// 初始化adapter并绑定数据
adapter = new CartItemAdapter(this, cartItems);
lvCart.setAdapter(adapter);
// 点击结算按钮
btnCheckout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO: 实现结算功能
}
});
}
// 自定义adapter
private class CartItemAdapter extends ArrayAdapter<CartItem> {
private int resource;
public CartItemAdapter(Context context, List<CartItem> objects) {
super(context, 0, objects);
resource = R.layout.item_cart;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
ViewHolder viewHolder;
if (convertView == null) {
view = LayoutInflater.from(getContext()).inflate(resource, parent, false);
viewHolder = new ViewHolder();
viewHolder.ivProduct = view.findViewById(R.id.iv_product);
viewHolder.tvName = view.findViewById(R.id.tv_name);
viewHolder.tvPrice = view.findViewById(R.id.tv_price);
viewHolder.btnMinus = view.findViewById(R.id.btn_minus);
viewHolder.btnPlus = view.findViewById(R.id.btn_plus);
viewHolder.tvCount = view.findViewById(R.id.tv_count);
viewHolder.btnDelete = view.findViewById(R.id.btn_delete);
view.setTag(viewHolder);
} else {
view = convertView;
viewHolder = (ViewHolder) view.getTag();
}
// 获取当前项的CartItem对象
final CartItem cartItem = getItem(position);
// 显示商品信息
viewHolder.ivProduct.setImageResource(cartItem.getProduct().getImage());
viewHolder.tvName.setText(cartItem.getProduct().getName());
viewHolder.tvPrice.setText(String.format("¥%.2f", cartItem.getProduct().getPrice()));
viewHolder.tvCount.setText(String.valueOf(cartItem.getCount()));
// 点击减少按钮
viewHolder.btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (cartItem.getCount() > 1) {
cartItem.setCount(cartItem.getCount() - 1);
notifyDataSetChanged();
updateTotalPrice();
}
}
});
// 点击增加按钮
viewHolder.btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cartItem.setCount(cartItem.getCount() + 1);
notifyDataSetChanged();
updateTotalPrice();
}
});
// 点击删除按钮
viewHolder.btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cartItems.remove(cartItem);
notifyDataSetChanged();
updateTotalPrice();
}
});
return view;
}
// 更新总价的方法
private void updateTotalPrice() {
double totalPrice = 0;
for (CartItem cartItem : cartItems) {
totalPrice += cartItem.getProduct().getPrice() * cartItem.getCount();
}
tvTotalPrice.setText(String.format("总价:¥%.2f", totalPrice));
}
// ViewHolder类
private class ViewHolder {
ImageView ivProduct;
TextView tvName;
TextView tvPrice;
Button btnMinus;
Button btnPlus;
TextView tvCount;
Button btnDelete;
}
}
}
```
这里我为了方便演示,直接在onCreate方法中初始化了购物车数据。实际开发中,购物车数据应该从服务器或本地数据库中读取。同时,为了方便演示,我也没有实现结算功能,你可以根据自己的需求实现。
阅读全文