国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android實現(xiàn)二級列表購物車功能

2019-10-22 18:24:55
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android實現(xiàn)二級列表購物車功能的具體代碼,供大家參考,具體內容如下

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;  /**   * 22   */  private TextView mTotalPrice;  /**   * 22   */  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;/** * Created by 鄭文杰 on 2017/10/24. */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());        //計算選中的商品數(shù),并發(fā)送到主界面進行顯示        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();        }      }    }  }  /**   * 判斷所有商家的所有商品的checkbox是否都選中   *   * @param childBean   * @return   */  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改變狀態(tài)        groupList.get(groupPosition).setChecked(cb.isChecked());        List<ChildBean> childBeenList = childList.get(groupPosition);        for (ChildBean childBean : childBeenList){          childBean.setChecked(cb.isChecked());        }        //計算選中的商品數(shù)和金額,并發(fā)送到主界面進行顯示        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();      }    }  }  /**   * 判斷其他商家是否選中   * @return   */  private boolean isGroupChecked() {    for (GroupBean groupBean : groupList) {      if (!groupBean.isChecked()){        return false;      }    }    return true;  }  //主界面全選框選中狀態(tài)  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);      }    }    //計算選中的商品數(shù),發(fā)送到主界面進行顯示    MCEvent mcEvent = new MCEvent();    mcEvent.setCount(totalCount());    mcEvent.setMoney(totalPrice());    EventBus.getDefault().post(mcEvent);    notifyDataSetChanged();  }  /**   * 計算商品總價格   *   * @return   */  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;  }  /**   * 計算商品的總數(shù)量   *   * @return   */  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()) {          //遍歷所有商品,只要是選中狀態(tài)的,就加1          count++;        }      }    }    return count;  }}

childBean:

package com.baway.twoshopcar;/** * Created by hhh on 2017/10/24. */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;/** * Created by hhh on 2017/10/24. */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;/** * Created by hhhh on 2017/10/24. */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;/** * Created by hhh on 2017/10/24. */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="數(shù)量" />    <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>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 义乌市| 甘洛县| 富顺县| 徐水县| 衡阳县| 体育| 三明市| 横山县| 平利县| 郁南县| 武汉市| 阜南县| 淮北市| 广河县| 千阳县| 靖西县| 克东县| 常德市| 华坪县| 策勒县| 涞水县| 玛多县| 平江县| 临海市| 安庆市| 曲周县| 舟曲县| 金乡县| 茶陵县| 余江县| 图木舒克市| 滕州市| 洪泽县| 甘谷县| 福清市| 安多县| 云龙县| 陆川县| 江津市| 湖北省| 清河县|