时间:2021-05-20
本文实例为大家分享了Android实现购物车功能的具体代码,供大家参考,具体内容如下
MainActivity布局:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/top_bar" android:layout_width="match_parent" android:layout_height="48dp" android:background="#E24146" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:minHeight="48dp" android:text="购物车" android:textColor="#ffffff" android:textSize="17sp" /> </LinearLayout> <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:childIndicator="@null" android:groupIndicator="@null" > </ListView> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" > <LinearLayout android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2.5" android:gravity="center_vertical" android:orientation="horizontal" > <CheckBox android:id="@+id/all_chekbox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginLeft="10dp" android:layout_marginRight="4dp" android:button="@drawable/check_box_bg" android:checkMark="?android:attr/listChoiceIndicatorMultiple" android:gravity="center" android:minHeight="64dp" android:paddingLeft="10dp" android:textAppearance="?android:attr/textAppearanceLarge" android:visibility="visible" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:text="合计:" android:textSize="16sp" android:textStyle="bold" /> <TextView android:id="@+id/tv_total_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="¥0.00" android:textColor="@color/purple" android:textSize="16sp" android:textStyle="bold" /> </LinearLayout> <TextView android:id="@+id/tv_delete" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="@color/orange" android:clickable="true" android:gravity="center" android:text="删除" android:textColor="#FAFAFA" /> <TextView android:id="@+id/tv_go_to_pay" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:background="#E24146" android:clickable="true" android:gravity="center" android:text="付款(0)" android:textColor="#FAFAFA" /> </LinearLayout></LinearLayout>import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.CheckBox;import android.widget.ListView;import android.widget.TextView;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Random;public class MainActivity extends AppCompatActivity implements CartAdapter.RefreshPriceInterface ,View.OnClickListener{ private ListView listView; private CheckBox cb_check_all; private TextView tv_total_price; private TextView tv_delete; private TextView tv_go_to_pay; private CartAdapter adapter; private double totalPrice = 0.00; private int totalCount = 0; private List<HashMap<String,String>> goodsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDate(); } //控制价格展示 private void priceControl(Map<String, Integer> pitchOnMap){ totalCount = 0; totalPrice = 0.00; for(int i=0;i<goodsList.size();i++){ if(pitchOnMap.get(goodsList.get(i).get("id"))==1){ totalCount=totalCount+Integer.valueOf(goodsList.get(i).get("count")); double goodsPrice=Integer.valueOf(goodsList.get(i).get("count"))*Double.valueOf(goodsList.get(i).get("price")); totalPrice=totalPrice+goodsPrice; } } tv_total_price.setText("¥ "+totalPrice); tv_go_to_pay.setText("付款("+totalCount+")"); } @Override public void refreshPrice(Map<String, Integer> pitchOnMap) { priceControl(pitchOnMap); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.all_chekbox: AllTheSelected(); break; case R.id.tv_go_to_pay: if(totalCount<=0){ Toast.makeText(this,"请选择要付款的商品~",Toast.LENGTH_SHORT).show(); return; } Toast.makeText(this,"钱就是另一回事了~",Toast.LENGTH_SHORT).show(); break; case R.id.tv_delete: if(totalCount<=0){ Toast.makeText(this,"请选择要删除的商品~",Toast.LENGTH_SHORT).show(); return; } checkDelete(adapter.getPitchOnMap()); break; } } //删除操作 private void checkDelete(Map<String,Integer> map){ List<HashMap<String,String>> waitDeleteList=new ArrayList<>(); Map<String,Integer> waitDeleteMap =new HashMap<>(); for(int i=0;i<goodsList.size();i++){ if(map.get(goodsList.get(i).get("id"))==1){ waitDeleteList.add(goodsList.get(i)); waitDeleteMap.put(goodsList.get(i).get("id"),map.get(goodsList.get(i).get("id"))); } } goodsList.removeAll(waitDeleteList); map.remove(waitDeleteMap); priceControl(map); adapter.notifyDataSetChanged(); } //全选或反选 private void AllTheSelected(){ Map<String,Integer> map=adapter.getPitchOnMap(); boolean isCheck=false; boolean isUnCheck=false; Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); if(Integer.valueOf(entry.getValue().toString())==1)isCheck=true; else isUnCheck=true; } if(isCheck==true&&isUnCheck==false){//已经全选,做反选 for(int i=0;i<goodsList.size();i++){ map.put(goodsList.get(i).get("id"),0); } cb_check_all.setChecked(false); }else if(isCheck==true && isUnCheck==true){//部分选择,做全选 for(int i=0;i<goodsList.size();i++){ map.put(goodsList.get(i).get("id"),1); } cb_check_all.setChecked(true); }else if(isCheck==false && isUnCheck==true){//一个没选,做全选 for(int i=0;i<goodsList.size();i++){ map.put(goodsList.get(i).get("id"),1); } cb_check_all.setChecked(true); } priceControl(map); adapter.setPitchOnMap(map); adapter.notifyDataSetChanged(); } private void initView(){ listView = (ListView) findViewById(R.id.listview); cb_check_all = (CheckBox) findViewById(R.id.all_chekbox); tv_total_price = (TextView) findViewById(R.id.tv_total_price); tv_delete = (TextView) findViewById(R.id.tv_delete); tv_go_to_pay = (TextView) findViewById(R.id.tv_go_to_pay); tv_go_to_pay.setOnClickListener(this); tv_delete.setOnClickListener(this); cb_check_all.setOnClickListener(this); adapter=new CartAdapter(this,goodsList); adapter.setRefreshPriceInterface(this); listView.setAdapter(adapter); adapter.notifyDataSetChanged(); } private void initDate(){ goodsList=new ArrayList<>(); for(int i=0;i<10;i++){ HashMap<String,String> map=new HashMap<>(); map.put("id",(new Random().nextInt(10000)%(10000-2900+2900) + 2900)+""); map.put("name","购物车里的第"+(i+1)+"件商品"); map.put("type",(i+20)+"码"); map.put("price",(new Random().nextInt(100)%(100-29+29) + 29)+""); map.put("count",(new Random().nextInt(10)%(10-1+1) + 1)+""); goodsList.add(map); } initView(); }}CartAdapter布局:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android实现购物车加减功能,效果图如下所示:publicclassadderViewextendsLinearLayoutimplementsView.O
本文实例为大家分享了java实现购物车功能的具体代码,供大家参考,具体内容如下1需要实现1、实现淘淘商城的购物车功能2购物车功能2.1功能说明1、商品加入购物车
PHP+Mysql简单实现了图书购物车本文主要讲述如何通过PHP+HTML简单实现图书购物车的功能,这是提取我们php项目的部分内容。主要内容包括:1.通过Ja
本文实例为大家分享了Servlet实现购物车功能的具体代码,供大家参考,具体内容如下(1)用servlet实现简单的购物车系统,项目结构例如以下:(新建webP
本文实例讲述了PHP实现的购物车类。分享给大家供大家参考。具体分析如下:该购物车类是基于CodeIgniter的购物车类仿写实现的。购物车基本功能如下:1)将物