我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

小编给大家分享一下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怎么实现二级列表购物车功能”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

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

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

Android怎么实现购物车功能

要实现购物车功能,你可以按照以下步骤进行操作:1. 创建一个购物车实体类,包含商品的名称、价格、数量等信息。2. 在你的应用程序中创建一个购物车界面,用于展示购物车中的商品列表。3. 在商品列表中,为每个商品添加一个“添加到购物车”按钮。4
2023-08-16

Android实现简单购物车功能

本文实例为大家分享了Android实现购物车功能的具体代码,供大家参考,具体内容如下MainActivity布局:
2023-05-30

php购物车功能怎么实现

要实现PHP购物车功能,您需要遵循以下步骤:1. 创建一个数据库表来存储购物车数据,例如:cart_items。表中应包含以下字段:id(自增ID),user_id(购物车所属用户ID),product_id(商品ID),quantity(
2023-05-31

jquery怎么实现购物车功能

本篇内容主要讲解“jquery怎么实现购物车功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery怎么实现购物车功能”吧!html<
2023-06-20

怎么用php实现购物车功能

要使用PHP实现购物车功能,可以按照以下步骤进行:1. 创建一个数据库表来存储购物车信息。例如,可以创建一个名为"cart"的表,包含列如下:- cart_id:购物车项的唯一标识符- product_id:产品的唯一标识符- produc
2023-08-24

php怎么实现加入购物车功能

要实现加入购物车功能,可以按照以下步骤进行:1. 创建一个购物车页面,展示用户已经添加到购物车中的商品列表。2. 在商品详情页面或者商品列表页面上,添加一个“加入购物车”的按钮。3. 当用户点击“加入购物车”按钮时,向服务器发送一个请求,将
2023-08-15

原生js怎么实现购物车功能

本篇内容介绍了“原生js怎么实现购物车功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!* 实现购物车商品数量的加减,注意数量最少为1,数量
2023-06-30

Android 购物车加减功能的实现代码

Android 实现购物车加减功能,效果图如下所示:public class adderView extends LinearLayout implements View.OnClickListener, TextWatcher {priv
2022-06-06

怎么用ThinkPHP实现一个购物车功能

这篇文章主要介绍“怎么用ThinkPHP实现一个购物车功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用ThinkPHP实现一个购物车功能”文章能帮助大家解决问题。首先,我们需要创建一个数据库
2023-07-06

Android实现购物车及其他功能的角标

1.先来张效果图2.自定义一个角标工具类BottomBarView 。*** Created by Administrator on 2016/12/27.* 角标工具类*/ public class BottomBarView exten
2022-06-06

vue 实现列表跳转至详情且能添加至购物车功能

列表页面显示数据,点击跳转到对应的详情页,详情页可以添加并跳转到购物车,购物车具有常见功能,这篇文章主要介绍了vue 实现列表跳转至详情且能添加至购物车,需要的朋友可以参考下
2022-11-13

怎么使用Android实现购物车页面及购物车效果

这篇文章主要介绍了怎么使用Android实现购物车页面及购物车效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android实现购物车页面及购物车效果(点击动画),具体如下
2023-05-30

Vue怎么实现购物车计算总价功能

本文小编为大家详细介绍“Vue怎么实现购物车计算总价功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue怎么实现购物车计算总价功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。效果:代码html
2023-06-30

jQuery怎么模拟实现淘宝购物车功能

这篇文章主要讲解了“jQuery怎么模拟实现淘宝购物车功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jQuery怎么模拟实现淘宝购物车功能”吧!首先我们要实现的内容的需求有如下几点:1.
2023-06-04

Android中如何使用RecyclerView实现简单购物车功能

这篇文章给大家分享的是有关Android中如何使用RecyclerView实现简单购物车功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下我们知道在ListView中用setTag来解决Item的复用
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录