返回顶部
首页 > 资讯 > 精选 >Android怎么实现二级列表购物车功能
  • 299
分享到

Android怎么实现二级列表购物车功能

android 2023-05-30 19:05:21 299人浏览 安东尼
摘要

小编给大家分享一下Android怎么实现二级列表购物车功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下MainActivity:package com.baway.twoshopcar;import

小编给大家分享一下Android怎么实现二级列表购物车功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

具体内容如下

Android怎么实现二级列表购物车功能

MainActivity:

package com.baway.twoshopcar;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.CheckBox;import android.widget.ExpandableListView;import android.widget.TextView;import org.greenrobot.eventbus.EventBus;import org.greenrobot.eventbus.Subscribe;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    private CheckBox mCbAll;    private TextView mTotalPrice;    private TextView mTotalNum;  private ExpandableListView mElv;  private List<GroupBean> groupList = new ArrayList<>();  private List<List<ChildBean>> childList = new ArrayList<>();  private MyAdapter adapter;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    EventBus.getDefault().reGISter(this);    initView();    initDate();    mElv.setGroupIndicator(null);    adapter = new MyAdapter(this, groupList, childList);    mElv.setAdapter(adapter);    for (int i = 0; i <groupList.size() ; i++) {      mElv.expandGroup(i);    }  }  @Subscribe  public void moneyCount(MCEvent mcEvent){    int money = mcEvent.getMoney();    int count = mcEvent.getCount();    mTotalNum.setText(count+"");    mTotalPrice.setText(money+"");  }  @Subscribe  public void messageEvent(MsgEvent msg) {    mCbAll.setChecked(msg.isFlag());  }  @Override  protected void onDestroy() {    super.onDestroy();    EventBus.getDefault().unregister(this);  }  private void initDate() {    for (int i = 0; i < 3; i++) {      GroupBean groupBean = new GroupBean(false, "商家" + i);      groupList.add(groupBean);      List<ChildBean> list = new ArrayList<>();      for (int j = 0; j < 2; j++) {        ChildBean childBean = new ChildBean("商品" + i, 1 + i, false);        list.add(childBean);      }      childList.add(list);    }  }  private void initView() {    mCbAll = (CheckBox) findViewById(R.id.cb_all);    mCbAll.setOnClickListener(this);    mTotalPrice = (TextView) findViewById(R.id.totalPrice);    mTotalNum = (TextView) findViewById(R.id.totalNum);    mElv = (ExpandableListView) findViewById(R.id.elv);  }  @Override  public void onClick(View v) {    switch (v.getId()) {      case R.id.cb_all:        adapter.allChecked(mCbAll.isChecked());        break;    }  }}

MyAdapter适配器:

package com.baway.twoshopcar;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.CheckBox;import android.widget.TextView;import org.greenrobot.eventbus.EventBus;import java.util.List;public class MyAdapter extends BaseExpandableListAdapter {  private Context context;  private List<GroupBean> groupList;  private List<List<ChildBean>> childList;  private int count;  private int sumMoney;  public MyAdapter(Context context, List<GroupBean> groupList, List<List<ChildBean>> childList) {    this.context = context;    this.groupList = groupList;    this.childList = childList;  }  @Override  public int getGroupCount() {    return groupList.size();  }  @Override  public int getChildrenCount(int groupPosition) {    return childList.get(groupPosition).size();  }  @Override  public Object getGroup(int groupPosition) {    return groupList.get(groupPosition);  }  @Override  public Object getChild(int groupPosition, int childPosition) {    return childList.get(groupPosition).get(childPosition);  }  @Override  public long getGroupId(int groupPosition) {    return groupPosition;  }  @Override  public long getChildId(int groupPosition, int childPosition) {    return childPosition;  }  @Override  public boolean hasStableIds() {    return false;  }  @Override  public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {    GroupViewHolder holder;    if (convertView == null) {      holder = new GroupViewHolder();      convertView = View.inflate(context, R.layout.groupitem, null);      holder.cb = convertView.findViewById(R.id.cb);      holder.tvName = convertView.findViewById(R.id.tvName);      convertView.setTag(holder);    } else {      holder = (GroupViewHolder) convertView.getTag();    }    //赋值    GroupBean groupBean = groupList.get(groupPosition);    holder.cb.setChecked(groupBean.isChecked());    holder.tvName.setText(groupBean.getGroupName());    //给group设置点击事件    holder.cb.setOnClickListener(new GroupCbOnClickListener(groupPosition));    return convertView;  }  @Override  public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {    ChildViewHolder holder;    if (convertView == null) {      holder = new ChildViewHolder();      convertView = View.inflate(context, R.layout.childitem, null);      holder.cb = convertView.findViewById(R.id.cb);      holder.tvName = convertView.findViewById(R.id.tvName);      holder.tvPrice = convertView.findViewById(R.id.tvPrice);      convertView.setTag(holder);    } else {      holder = (ChildViewHolder) convertView.getTag();    }    //赋值    ChildBean childBean = childList.get(groupPosition).get(childPosition);    holder.cb.setChecked(childBean.isChecked());    holder.tvName.setText(childBean.getChildName());    holder.tvPrice.setText(childBean.getPrice() + "");    //设置点击事件Child    holder.cb.setOnClickListener(new ChildCbOnClickListener(groupPosition,childPosition));    return convertView;  }  @Override  public boolean isChildSelectable(int groupPosition, int childPosition) {    return true;  }  class GroupViewHolder {    CheckBox cb;    TextView tvName;  }  class ChildViewHolder {    CheckBox cb;    TextView tvName;    TextView tvPrice;  }  class ChildCbOnClickListener implements View.OnClickListener {    private int groupPosition;    private int childPosition;    public ChildCbOnClickListener(int groupPosition, int childPosition) {      this.groupPosition = groupPosition;      this.childPosition = childPosition;    }    @Override    public void onClick(View v) {      if (v instanceof CheckBox) {        CheckBox cb = (CheckBox) v;        List<ChildBean> childBeen = childList.get(groupPosition);        ChildBean childBean = childBeen.get(childPosition);        childBean.setChecked(cb.isChecked());        //计算选中的商品数,并发送到主界面进行显示        MCEvent mcEvent = new MCEvent();        mcEvent.setCount(totalCount());        mcEvent.setMoney(totalPrice());        EventBus.getDefault().post(mcEvent);        //判断商家所有的商品的checkbox是否选中        if (isChildChecked(childBeen)) {          groupList.get(groupPosition).setChecked(true);          MsgEvent msgEvent = new MsgEvent();          msgEvent.setFlag(isGroupChecked());          EventBus.getDefault().post(msgEvent);          notifyDataSetChanged();        } else {          groupList.get(groupPosition).setChecked(false);          MsgEvent msgEvent = new MsgEvent();          msgEvent.setFlag(false);          msgEvent.setFlag(isGroupChecked());          EventBus.getDefault().post(msgEvent);          notifyDataSetChanged();        }      }    }  }    private boolean isChildChecked(List<ChildBean> childBean) {    for (int i = 0; i < childBean.size(); i++) {      ChildBean childBean1 = childBean.get(i);      if (!childBean1.isChecked()) {        return false;      }    }    return true;  }  class GroupCbOnClickListener implements View.OnClickListener {    private int groupPosition;    public GroupCbOnClickListener(int groupPosition) {      this.groupPosition = groupPosition;    }    @Override    public void onClick(View v) {      if (v instanceof CheckBox){        CheckBox cb= (CheckBox) v;        //根据cb.isChecked()是否选中,给一级列的checkbox改变状态        groupList.get(groupPosition).setChecked(cb.isChecked());        List<ChildBean> childBeenList = childList.get(groupPosition);        for (ChildBean childBean : childBeenList){          childBean.setChecked(cb.isChecked());        }        //计算选中的商品数和金额,并发送到主界面进行显示        MCEvent mcEvent = new MCEvent();        mcEvent.setCount(totalCount());        mcEvent.setMoney(totalPrice());        EventBus.getDefault().post(mcEvent);        MsgEvent msgEvent = new MsgEvent();        msgEvent.setFlag(isGroupChecked());        EventBus.getDefault().post(msgEvent);        notifyDataSetChanged();      }    }  }    private boolean isGroupChecked() {    for (GroupBean groupBean : groupList) {      if (!groupBean.isChecked()){        return false;      }    }    return true;  }  //主界面全选框选中状态  public void allChecked(boolean bool) {    for (int i = 0; i < groupList.size(); i++) {      groupList.get(i).setChecked(bool);      for (int j = 0; j < childList.get(i).size(); j++) {        childList.get(i).get(j).setChecked(bool);      }    }    //计算选中的商品数,发送到主界面进行显示    MCEvent mcEvent = new MCEvent();    mcEvent.setCount(totalCount());    mcEvent.setMoney(totalPrice());    EventBus.getDefault().post(mcEvent);    notifyDataSetChanged();  }    private int totalPrice() {    sumMoney = 0;    for (int i = 0; i < groupList.size(); i++) {      for (int j = 0; j < childList.get(i).size(); j++) {        if (childList.get(i).get(j).isChecked()) {          int price = childList.get(i).get(j).getPrice();          sumMoney += price;        }      }    }    return sumMoney;  }    private int totalCount() {    count = 0;    for (int i = 0; i < groupList.size(); i++) {      for (int j = 0; j < childList.get(i).size(); j++) {        if (childList.get(i).get(j).isChecked()) {          //遍历所有商品,只要是选中状态的,就加1          count++;        }      }    }    return count;  }}

childBean:

package com.baway.twoshopcar;public class ChildBean {  private String childName;  private int price;  private boolean checked;  public ChildBean(String childName, int price, boolean checked) {    this.childName = childName;    this.price = price;    this.checked = checked;  }  public String getChildName() {    return childName;  }  public void setChildName(String childName) {    this.childName = childName;  }  public int getPrice() {    return price;  }  public void setPrice(int price) {    this.price = price;  }  public boolean isChecked() {    return checked;  }  public void setChecked(boolean checked) {    this.checked = checked;  }}

groupBean:

package com.baway.twoshopcar;public class GroupBean {  private boolean checked;  private String groupName;  public GroupBean(boolean checked, String groupName) {    this.checked = checked;    this.groupName = groupName;  }  public boolean isChecked() {    return checked;  }  public void setChecked(boolean checked) {    this.checked = checked;  }  public String getGroupName() {    return groupName;  }  public void setGroupName(String groupName) {    this.groupName = groupName;  }}

MCEVENT:

package com.baway.twoshopcar;public class MCEvent {  private int money;  private int count;  public int getMoney() {    return money;  }  public void setMoney(int money) {    this.money = money;  }  public int getCount() {    return count;  }  public void setCount(int count) {    this.count = count;  }}

msgEvent:

package com.baway.twoshopcar;public class MsgEvent {  private boolean flag;  public boolean isFlag() {    return flag;  }  public void setFlag(boolean flag) {    this.flag = flag;  }}

MainActivity布局文件:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="Http://schemas.android.com/apk/res/android"  xmlns:app="http://schemas.android.com/apk/res-auto"  xmlns:tools="http://schemas.android.com/tools"  android:layout_width="match_parent"  android:layout_height="match_parent"  tools:context="com.baway.twoshopcar.MainActivity">  <LinearLayout    android:id="@+id/ll"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:layout_alignParentBottom="true"    android:orientation="horizontal">    <CheckBox      android:id="@+id/cb_all"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_gravity="center_vertical"      android:text="全选" />    <TextView      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_marginLeft="20dp"      android:gravity="center_vertical"      android:text="合计:" />    <TextView      android:id="@+id/totalPrice"      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_marginLeft="10dp"      android:gravity="center_vertical"      android:text="22" />    <TextView      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_marginLeft="30dp"      android:gravity="center_vertical"      android:text="数量" />    <TextView      android:id="@+id/totalNum"      android:layout_width="wrap_content"      android:layout_height="match_parent"      android:layout_marginLeft="10dp"      android:gravity="center_vertical"      android:text="22" />  </LinearLayout>  <ExpandableListView    android:id="@+id/elv"    android:layout_above="@id/ll"    android:layout_width="match_parent"    android:layout_height="match_parent"></ExpandableListView></RelativeLayout>

childitem布局文件:

<?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="40dp"  android:background="#330000ff"  android:paddingLeft="20dp"  android:gravity="center_vertical"  android:orientation="horizontal">  <CheckBox    android:id="@+id/cb"    android:layout_width="wrap_content"    android:layout_height="wrap_content" />  <TextView    android:id="@+id/tvName"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginLeft="5dp" />  <TextView    android:id="@+id/tvPrice"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:layout_marginLeft="60dp" /></LinearLayout>

groupitem布局:

<?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="40dp" android:background="#330000ff" android:gravity="center_vertical" android:orientation="horizontal"> <CheckBox  android:id="@+id/cb"  android:layout_width="wrap_content"  android:layout_height="wrap_content" /> <TextView  android:id="@+id/tvName"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:layout_marginLeft="5dp" /></LinearLayout>

看完了这篇文章,相信你对“Android怎么实现二级列表购物车功能”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: Android怎么实现二级列表购物车功能

本文链接: https://lsjlt.com/news/220456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android怎么实现二级列表购物车功能
    小编给大家分享一下Android怎么实现二级列表购物车功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下MainActivity:package com.baway.twoshopcar;import...
    99+
    2023-05-30
    android
  • Android怎么实现购物车功能
    要实现购物车功能,你可以按照以下步骤进行操作:1. 创建一个购物车实体类,包含商品的名称、价格、数量等信息。2. 在你的应用程序中创...
    99+
    2023-08-16
    Android
  • Android实现简单购物车功能
    本文实例为大家分享了Android实现购物车功能的具体代码,供大家参考,具体内容如下MainActivity布局:<?xml version="1.0" encoding="utf-8"?><LinearL...
    99+
    2023-05-30
    android 购物车 roi
  • Vue2.0怎么实现购物车功能
    这篇文章将为大家详细讲解有关Vue2.0怎么实现购物车功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。简介vue.js是由华人尤雨溪开发的一套MVVM框架。vue.js...
    99+
    2024-04-02
  • jquery怎么实现购物车功能
    本篇内容主要讲解“jquery怎么实现购物车功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery怎么实现购物车功能”吧!html<!DOCTYPE html>&l...
    99+
    2023-06-20
  • php购物车功能怎么实现
    要实现PHP购物车功能,您需要遵循以下步骤:1. 创建一个数据库表来存储购物车数据,例如:cart_items。表中应包含以下字段:...
    99+
    2023-05-31
    php购物车 php
  • jquery实现购物车功能
    本文实例为大家分享了jquery实现购物车功能的具体代码,供大家参考,具体内容如下 html ​<!DOCTYPE html> <html> ...
    99+
    2024-04-02
  • python实现购物车功能
    本文实例为大家分享了python实现购物车功能的具体代码,供大家参考,具体内容如下 功能要求: 要求用户输入总资产,例如:2000显示商品列表,让用户根据序号选择商品,加入购物车购买...
    99+
    2024-04-02
  • javaweb实现购物车功能
    本篇文章讲的是如何使用javaweb相关知识模拟购物车功能 (web练手小项目) 使用到的相关知识(部分知识点在文章中简单涉及到):        html  cs  javascript  jsp  servlet   ajax  jQu...
    99+
    2023-10-24
    mybatis java mysql servlet tomcat
  • python购物车功能实现
    name = "gaowang" pwd = "123.abc" list_he=[]          #定义空列表,后面接收 for i in range(3):     username = input("请输入您的账号:")    ...
    99+
    2023-01-31
    购物车 功能 python
  • 怎么用php实现购物车功能
    要使用PHP实现购物车功能,可以按照以下步骤进行:1. 创建一个数据库表来存储购物车信息。例如,可以创建一个名为"cart"的表,包...
    99+
    2023-08-24
    PHP
  • Android中RecyclerView实现简单购物车功能
    Android中RecyclerView实现简单的购物车,供大家参考,具体内容如下 我们知道在ListView中用setTag来解决Item的复用问题,但是RecyclerView中...
    99+
    2024-04-02
  • 原生js怎么实现购物车功能
    本篇内容介绍了“原生js怎么实现购物车功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!* 实现购物车商品数量的加减,注意数量最少为1,数量...
    99+
    2023-06-30
  • php怎么实现加入购物车功能
    要实现加入购物车功能,可以按照以下步骤进行:1. 创建一个购物车页面,展示用户已经添加到购物车中的商品列表。2. 在商品详情页面或者...
    99+
    2023-08-15
    php
  • Android 购物车加减功能的实现代码
    Android 实现购物车加减功能,效果图如下所示: public class adderView extends LinearLayout implements View...
    99+
    2022-06-06
    购物车 Android
  • 如何实现IONIC购物车功能
    这篇文章主要为大家展示了“如何实现IONIC购物车功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现IONIC购物车功能”这篇文章吧。具体内容如下HTM...
    99+
    2024-04-02
  • Vue.js框架实现购物车功能
    本文实例为大家分享了Vue.js框架实现购物车的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html lang="en" xmlns:...
    99+
    2024-04-02
  • js实现简易购物车功能
    本文实例为大家分享了js实现简易购物车功能的具体代码,供大家参考,具体内容如下 一.整体效果图 (关灯下)  (开灯下) 二.HTML代码 <!DOCTYPE...
    99+
    2024-04-02
  • vue如果实现购物车功能
    本文小编为大家详细介绍“vue如果实现购物车功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue如果实现购物车功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。 原理分析...
    99+
    2024-04-02
  • vue实现书籍购物车功能
    本文实例为大家分享了vue实现书籍购物车功能的具体代码,供大家参考,具体内容如下 效果图 点击增加、减少购买数量和移除总价格会变化 代码 <!DOCTYPE html&g...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作