Android 简单购物车_第1张图片

Android 简单购物车_第2张图片

主要逻辑代码:

public class CaetAdapter extends BaseAdapter {    private Context context;    private List> list;    private HashMap pitchOnMap;    public HashMap getPitchOnMap() {        return pitchOnMap;    }    public void setPitchOnMap(HashMap pitchOnMap) {        this.pitchOnMap = pitchOnMap;    }    public CaetAdapter(Context context, List> list) {        this.context = context;        this.list = list;        pitchOnMap = new HashMap<>();        for (int i = 0; i < list.size(); i++) {            pitchOnMap.put(list.get(i).get("id"), 0);        }    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(final int position, View convertView, ViewGroup parent) {        convertView = View.inflate(context, R.layout.item_layout, null);        final CheckBox checkBox;        ImageView icon;        final TextView name, price, num, type, reduce, add;        checkBox = convertView.findViewById(R.id.check_box);        icon = convertView.findViewById(R.id.iv_adapter_list_pic);        name = convertView.findViewById(R.id.tv_goods_name);        price = convertView.findViewById(R.id.tv_goods_price);        type = convertView.findViewById(R.id.tv_type_size);        num = convertView.findViewById(R.id.tv_num);        reduce = convertView.findViewById(R.id.tv_reduce);        add = convertView.findViewById(R.id.tv_add);        name.setText(list.get(position).get("name"));        price.setText("¥ " + (Integer.valueOf(list.get(position).get("price"))) * (Integer.valueOf(list.get(position).get("count"))));        type.setText(list.get(position).get("type"));        num.setText(list.get(position).get("count"));        if(pitchOnMap.get(list.get(position).get("id"))== 0){            checkBox.setChecked(false);        }else{            checkBox.setChecked(true);        }        checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                if(checkBox.isChecked()){                    pitchOnMap.put(list.get(position).get("id"),1);                }else{                    pitchOnMap.put(list.get(position).get("id"), 0);                }                mrefreshPriceInterface.refreshPrice(pitchOnMap);            }        });        //商品数量减        reduce.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (Integer.valueOf(list.get(position).get("count")) <= 1) {                    Toast.makeText(context, "数量不能再减啦,只能删除!", Toast.LENGTH_SHORT).show();                } else {                    list.get(position).put("count", (Integer.valueOf(list.get(position).get("count")) - 1) + "");                    notifyDataSetChanged();                }                mrefreshPriceInterface.refreshPrice(pitchOnMap);            }        });        //商品数量加        add.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                list.get(position).put("count", (Integer.valueOf(list.get(position).get("count")) + 1) + "");                notifyDataSetChanged();                mrefreshPriceInterface.refreshPrice(pitchOnMap);            }        });        return convertView;    }    /**     * 创建接口     */    public interface RefreshPriceInterface {        /**         * 把价格展示到总价上         * @param pitchOnMap         */        void refreshPrice(HashMap pitchOnMap);    }    /**     * 定义一个接口对象     */    private RefreshPriceInterface mrefreshPriceInterface;    /**     * 向外部暴露一个方法     * 把价格展示到总价上     * @param refreshPriceInterface     */    public void setRefreshPriceInterface(RefreshPriceInterface refreshPriceInterface) {        mrefreshPriceInterface = refreshPriceInterface;    }}

 

MainActivity

 

 

public class MainActivity extends AppCompatActivity implements View.OnClickListener,CaetAdapter.RefreshPriceInterface{    private LinearLayout top_bar;    private ListView listview;    private CheckBox all_chekbox;    private TextView price;    private TextView delete;    private TextView tv_go_to_pay;    private List goodsList;    private UserDao userDao;    private List> listmap=new ArrayList<>();    private CaetAdapter adapter;    private double totalPrice = 0.00;    private int totalCount = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        top_bar = (LinearLayout) findViewById(R.id.top_bar);        listview = (ListView) findViewById(R.id.listview);        all_chekbox = (CheckBox) findViewById(R.id.all_chekbox);        price = (TextView) findViewById(R.id.tv_total_price);        delete = (TextView) findViewById(R.id.tv_delete);        tv_go_to_pay = (TextView) findViewById(R.id.tv_go_to_pay);        all_chekbox.setOnClickListener(this);        delete.setOnClickListener(this);        tv_go_to_pay.setOnClickListener(this);        initDate();        adapter = new CaetAdapter(MainActivity.this, listmap);        listview.setAdapter(adapter);        adapter.setRefreshPriceInterface(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.all_chekbox:                AllTheSelected();                break;            case R.id.tv_delete:                checkDelete(adapter.getPitchOnMap());                break;            case R.id.tv_go_to_pay:                if(totalCount<=0){                    Toast.makeText(this,"请选择要付款的商品~",Toast.LENGTH_SHORT).show();                }else{                    Toast.makeText(this,"付款成功",Toast.LENGTH_SHORT).show();                }                break;        }    }    /**     * 数据     */    private void initDate() {        //创建集合        goodsList = new ArrayList<>();        //数据库        userDao = Myapplication.getInstances().getDaoSession().getUserDao();        userDao.deleteAll();        //数据源        for (int i = 0; i < 10; i++) {            //向数据库存放数据            User user = new User((long) i,                    "购物车里的第" + (i + 1) + "件商品",                    (i + 20) + "码",                    "10",                    "10");            userDao.insert(user);        }        //从数据库中把数据放到集合中        goodsList=userDao.loadAll();        //把结合中的数据放到HashMap集合中        for(int i=0;i map=new HashMap<>();            map.put("id",goodsList.get(i).getId()+"");            map.put("name",goodsList.get(i).getName());            map.put("type",(goodsList.get(i).getType()));            map.put("price",goodsList.get(i).getPrice()+"");            map.put("count",goodsList.get(i).getCount()+"");            listmap.add(map);        }    }    @Override    public void refreshPrice(HashMap pitchOnMap) {        priceControl(pitchOnMap);    }    /**     *  控制价格展示总价     */    private void priceControl(Map pitchOnMap){        totalCount = 0;        totalPrice = 0.00;        for(int i=0;i map){        List> waitDeleteList=new ArrayList<>();        Map waitDeleteMap =new HashMap<>();        for(int i=0;i 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

项目地址:

https://github.com/King-GWJ/ShoppingDemo

 

 

更多相关文章

  1. Android Http网络数据传输备忘
  2. android手机端保存xml数据
  3. Android的NDK开发(4)————JNI数据结构之JNINativeMethod
  4. Android之解析Android Map地图返回的Json数据
  5. Android临时数据缓存方法
  6. 优雅的处理Android数据库升级的问题
  7. Android -- 获取摄像头帧数据解码
  8. SQLite数据库总结
  9. Android连接SQLite数据库

随机推荐

  1. SQL今日一题(2)
  2. SQL今日一题(8)
  3. 脑洞:如何用一个整数来表示一个列表?
  4. SQL今日一题(3)
  5. SQL今日一题(9):空值检查
  6. 深入浅出数据分析
  7. Java Web: 发送请求,CSS文件 和 JS文件引
  8. 简单地聊聊统计学
  9. Excel如何分组排序
  10. 数据分析应关注AARRR模型的哪些指标