欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android實現(xiàn)簡單購物車

 更新時間:2022年06月19日 09:06:39   作者:一口一個9  
這篇文章主要為大家詳細介紹了Android實現(xiàn)簡單購物車,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

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

這里我用到的都是Android自帶SDK中的資源,做了一個極其簡單的購物車實現(xiàn),總結購物車難點包含兩個方面:

1、CheckBox的聯(lián)動:

全選框、商鋪復選框以及商品復選框要做到滴水不漏的聯(lián)動,我的經驗是在監(jiān)聽多選框時盡量采用click事件,避免使用checkChange事件(因為它總是能在你意想不到的地方調用),全選框可以通過商品價格來判斷,這個在代碼中也有體現(xiàn)。

2、數(shù)據(jù)的聯(lián)動和UI的聯(lián)動:

適配器的都是在外部類創(chuàng)建,而總價格等控件都是在調用適配器的地方,這個要做到聯(lián)動,最簡單的方式必然就是接口的回調,熟練使用可以節(jié)省很多代碼,提高編程效率。

再有一個比較容易出現(xiàn)問題的地方就在于,我們經常是首先更改數(shù)據(jù),然后通知適配器刷新數(shù)據(jù)(notifyDataSetChanged()),這里要注意的一點就是在更新數(shù)據(jù)的時候,一定確保更新的傳遞到適配器中的數(shù)據(jù)集合,否則會發(fā)現(xiàn)這個更新適配器的方法是無效的。

其他相關問題代碼中均有體現(xiàn),如果和我一樣是一個編程小白,仔細閱讀會有收獲滴。

代碼中沒有添加自己的資源,邏輯都有實現(xiàn)就是UI丑了一點

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
? ? android:orientation="vertical"
? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? xmlns:tools="http://schemas.android.com/tools"
? ? android:id="@+id/activity_main"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent"
? ? tools:context="com.bwie.test.test1025two.MainActivity">

? ? <RelativeLayout
? ? ? ? android:layout_gravity="center_horizontal"
? ? ? ? android:background="@color/colorAccent"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="50dp">
? ? ? ? <TextView
? ? ? ? ? ? android:textSize="38sp"
? ? ? ? ? ? android:gravity="center"
? ? ? ? ? ? android:textColor="#fff"
? ? ? ? ? ? android:text="購物車"
? ? ? ? ? ? android:layout_width="match_parent"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <TextView
? ? ? ? ? ? android:textColor="#fff"
? ? ? ? ? ? android:textSize="38sp"
? ? ? ? ? ? android:layout_alignParentRight="true"
? ? ? ? ? ? android:text="2"
? ? ? ? ? ? android:id="@+id/main_num"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? </RelativeLayout>
? ? <ExpandableListView
? ? ? ? android:layout_weight="1"
? ? ? ? android:id="@+id/expand_able_view"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent"/>
? ? <LinearLayout
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="wrap_content">
? ? ? ? <CheckBox
? ? ? ? ? ? android:layout_weight="1"
? ? ? ? ? ? android:id="@+id/main_check_all"
? ? ? ? ? ? android:text="全選"
? ? ? ? ? ? android:layout_width="0dp"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <TextView
? ? ? ? ? ? android:id="@+id/main_price"
? ? ? ? ? ? android:gravity="center_horizontal"
? ? ? ? ? ? android:text="0"
? ? ? ? ? ? android:layout_weight="1"
? ? ? ? ? ? android:layout_width="0dp"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <Button
? ? ? ? ? ? android:id="@+id/btn_delete"
? ? ? ? ? ? android:background="#aaa"
? ? ? ? ? ? android:layout_weight="1"
? ? ? ? ? ? android:text="刪除"
? ? ? ? ? ? android:layout_width="0dp"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <Button
? ? ? ? ? ? android:id="@+id/btn_buy"
? ? ? ? ? ? android:background="#f99"
? ? ? ? ? ? android:layout_weight="1"
? ? ? ? ? ? android:text="購買"
? ? ? ? ? ? android:layout_width="0dp"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? </LinearLayout>
</LinearLayout>

group_item:

注:這里圖了個簡單,商鋪名稱我是通過設置CheckBox的text來顯示的,另外取消焦點是為了不影響二級列表的點擊展開與收回子集列表

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
? ? android:orientation="horizontal"
? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent">

? ? <CheckBox
? ? ? ? android:focusable="false"
? ? ? ? android:id="@+id/group_check"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content" />
</LinearLayout>

child_item:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
? ? android:orientation="horizontal"
? ? xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent">

? ? <CheckBox
? ? ? ? android:id="@+id/child_check"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content" />
? ? <ImageView
? ? ? ? android:id="@+id/child_img"
? ? ? ? android:scaleType="center"
? ? ? ? android:src="@mipmap/ic_launcher"
? ? ? ? android:layout_width="80dp"
? ? ? ? android:layout_height="80dp" />
? ? <TextView
? ? ? ? android:id="@+id/child_price"
? ? ? ? android:textSize="22sp"
? ? ? ? android:textColor="@color/colorPrimary"
? ? ? ? android:text="2888"
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="80dp" />
? ? <RelativeLayout
? ? ? ? android:layout_weight="1"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="80dp">
? ? ? ? <TextView
? ? ? ? ? ? android:text="名字"
? ? ? ? ? ? android:id="@+id/child_name"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content" />
? ? ? ? <LinearLayout
? ? ? ? ? ? android:orientation="horizontal"
? ? ? ? ? ? android:layout_alignParentBottom="true"
? ? ? ? ? ? android:layout_width="wrap_content"
? ? ? ? ? ? android:layout_height="wrap_content">
? ? ? ? ? ? <TextView
? ? ? ? ? ? ? ? android:id="@+id/child_jian"
? ? ? ? ? ? ? ? android:gravity="center_horizontal"
? ? ? ? ? ? ? ? android:text="—"
? ? ? ? ? ? ? ? android:layout_width="30dp"
? ? ? ? ? ? ? ? android:layout_height="30dp" />
? ? ? ? ? ? <TextView
? ? ? ? ? ? ? ? android:gravity="center_horizontal"
? ? ? ? ? ? ? ? android:text="2"
? ? ? ? ? ? ? ? android:id="@+id/child_num"
? ? ? ? ? ? ? ? android:layout_width="30dp"
? ? ? ? ? ? ? ? android:layout_height="30dp" />
? ? ? ? ? ? <TextView
? ? ? ? ? ? ? ? android:id="@+id/child_jia"
? ? ? ? ? ? ? ? android:gravity="center_horizontal"
? ? ? ? ? ? ? ? android:text="+"
? ? ? ? ? ? ? ? android:layout_width="30dp"
? ? ? ? ? ? ? ? android:layout_height="30dp" />
? ? ? ? </LinearLayout>
? ? </RelativeLayout>
</LinearLayout>

groupBean:

package com.bwie.test.test1025two;

import java.util.ArrayList;

/**
?* Created by Zzw on 2017/10/25.
?*/

public class Group {
? ? private String name;
? ? private boolean check;
? ? private ArrayList<Child> children;

? ? public Group(String name, boolean check,ArrayList<Child> children) {
? ? ? ? this.name = name;
? ? ? ? this.check = check;
? ? ? ? this.children = children;
? ? }

? ? public Group() {
? ? }

? ? public String getName() {
? ? ? ? return name;
? ? }

? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }

? ? public boolean isCheck() {
? ? ? ? return check;
? ? }

? ? public void setCheck(boolean check) {
? ? ? ? this.check = check;
? ? }
? ? public void setChildren(ArrayList<Child> children){
? ? ? ? this.children = children;
? ? }
? ? public ArrayList<Child> getChildren(){
? ? ? ? return children;
? ? }

? ? @Override
? ? public String toString() {
? ? ? ? return "Group{" +
? ? ? ? ? ? ? ? "name='" + name + '\'' +
? ? ? ? ? ? ? ? ", check=" + check +
? ? ? ? ? ? ? ? '}';
? ? }
}

childBean:

package com.bwie.test.test1025two;

/**
?* Created by Zzw on 2017/10/25.
?*/

public class Child {
? ? private String name;
? ? private String img;
? ? private int num;
? ? private boolean check;
? ? private int price;

? ? public Child(String name, String img, int num, boolean check, int price) {
? ? ? ? this.name = name;
? ? ? ? this.img = img;
? ? ? ? this.num = num;
? ? ? ? this.check = check;
? ? ? ? this.price = price;
? ? }

? ? public Child() {
? ? }

? ? public String getName() {
? ? ? ? return name;
? ? }

? ? public void setName(String name) {
? ? ? ? this.name = name;
? ? }

? ? public String getImg() {
? ? ? ? return img;
? ? }

? ? public void setImg(String img) {
? ? ? ? this.img = img;
? ? }

? ? public int getNum() {
? ? ? ? return num;
? ? }

? ? public void setNum(int num) {
? ? ? ? this.num = num;
? ? }

? ? public boolean isCheck() {
? ? ? ? return check;
? ? }

? ? public void setCheck(boolean check) {
? ? ? ? this.check = check;
? ? }

? ? public int getPrice() {
? ? ? ? return price;
? ? }

? ? public void setPrice(int price) {
? ? ? ? this.price = price;
? ? }

? ? @Override
? ? public String toString() {
? ? ? ? return "Child{" +
? ? ? ? ? ? ? ? "name='" + name + '\'' +
? ? ? ? ? ? ? ? ", img='" + img + '\'' +
? ? ? ? ? ? ? ? ", num=" + num +
? ? ? ? ? ? ? ? ", check=" + check +
? ? ? ? ? ? ? ? ", price=" + price +
? ? ? ? ? ? ? ? '}';
? ? }
}

MyAdapter:

package com.bwie.test.test1025two;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

/**
?* Created by Zzw on 2017/10/25.
?*/

public class MyAdapter extends BaseExpandableListAdapter {
? ? Context context;
? ? ArrayList<Group> groups;

? ? public MyAdapter(Context context, ArrayList<Group> groups) {
? ? ? ? this.context = context;
? ? ? ? this.groups = groups;
? ? }

? ? //監(jiān)聽加減事件回調接口
? ? public interface onNumChangeListener{
? ? ? ? void onNumChange(int groupID,int childID,boolean isAdd);
? ? }
? ? private onNumChangeListener mOnNumChangeListener;
? ? public void setOnNumChangeListener(onNumChangeListener mOnNumChangeListener){
? ? ? ? this.mOnNumChangeListener = mOnNumChangeListener;
? ? }

? ? //監(jiān)聽多選框點擊事件回調接口。
? ? public interface onCheckChangeListener{
? ? ? ? void onGroupClick(int groupID);
? ? ? ? void onChildClick(int groupID,int childID);
? ? }
? ? private onCheckChangeListener mOnCheckChangeListener;
? ? public void setmOnCheckChangeListener(onCheckChangeListener mOnCheckChangeListener){
? ? ? ? this.mOnCheckChangeListener = mOnCheckChangeListener;
? ? }

? ? //監(jiān)聽價格需要更新回調接口
? ? public interface onShouldChangeMoneyListener{
? ? ? ? void onShouldChnageMoney();
? ? }
? ? private onShouldChangeMoneyListener mOnShouldChangeMoneyListener;
? ? public void setmOnShouldChangeMoneyListener(onShouldChangeMoneyListener mOnShouldChangeMoneyListener){
? ? ? ? this.mOnShouldChangeMoneyListener = mOnShouldChangeMoneyListener;
? ? }

? ? @Override
? ? public int getGroupCount() {
? ? ? ? return groups.size();
? ? }

? ? @Override
? ? public int getChildrenCount(int i) {
? ? ? ? return groups.get(i).getChildren().size();
? ? }

? ? @Override
? ? public Object getGroup(int i) {
? ? ? ? return groups.get(i);
? ? }

? ? @Override
? ? public Object getChild(int i, int i1) {
? ? ? ? return groups.get(i).getChildren().get(i1);
? ? }

? ? @Override
? ? public long getGroupId(int i) {
? ? ? ? return i;
? ? }

? ? @Override
? ? public long getChildId(int i, int i1) {
? ? ? ? return i1;
? ? }

? ? @Override
? ? public boolean hasStableIds() {
? ? ? ? return false;
? ? }

? ? @Override
? ? public View getGroupView(final int i, boolean b, View view, ViewGroup viewGroup) {
? ? ? ? GroupHolder holder = null;
? ? ? ? if (view == null){
? ? ? ? ? ? view = LayoutInflater.from(context).inflate(R.layout.group_item,viewGroup,false);
? ? ? ? ? ? holder ?= new GroupHolder();
? ? ? ? ? ? holder.checkBox = (CheckBox) view.findViewById(R.id.group_check);
? ? ? ? ? ? view.setTag(holder);
? ? ? ? }else{
? ? ? ? ? ? holder = (GroupHolder) view.getTag();
? ? ? ? }
? ? ? ? holder.checkBox.setText(groups.get(i).getName());
? ? ? ? holder.checkBox.setChecked(groups.get(i).isCheck());
? ? ? ? if (mOnCheckChangeListener != null&&mOnShouldChangeMoneyListener != null){
? ? ? ? ? ? holder.checkBox.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? ? ? mOnCheckChangeListener.onGroupClick(i);
? ? ? ? ? ? ? ? ? ? mOnShouldChangeMoneyListener.onShouldChnageMoney();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? return view;
? ? }

? ? @Override
? ? public View getChildView(final int i,final int i1, boolean b, View view, ViewGroup viewGroup) {
? ? ? ? ChildHolder holder = null;
? ? ? ? if (view == null){
? ? ? ? ? ? view = LayoutInflater.from(context).inflate(R.layout.child_item,viewGroup,false);
? ? ? ? ? ? holder = new ChildHolder();
? ? ? ? ? ? holder.checkBox = (CheckBox) view.findViewById(R.id.child_check);
? ? ? ? ? ? holder.imageView = (ImageView) view.findViewById(R.id.child_img);
? ? ? ? ? ? holder.name = (TextView) view.findViewById(R.id.child_name);
? ? ? ? ? ? holder.num = (TextView) view.findViewById(R.id.child_num);
? ? ? ? ? ? holder.jian = (TextView) view.findViewById(R.id.child_jian);
? ? ? ? ? ? holder.jia = (TextView) view.findViewById(R.id.child_jia);
? ? ? ? ? ? holder.price = (TextView) view.findViewById(R.id.child_price);
? ? ? ? ? ? view.setTag(holder);
? ? ? ? }else{
? ? ? ? ? ? holder = (ChildHolder) view.getTag();
? ? ? ? }
? ? ? ? holder.checkBox.setChecked(groups.get(i).getChildren().get(i1).isCheck());
? ? ? ? holder.imageView.setImageResource(R.mipmap.ic_launcher);
? ? ? ? holder.name.setText(groups.get(i).getChildren().get(i1).getName());
? ? ? ? holder.num.setText(groups.get(i).getChildren().get(i1).getNum()+"");
? ? ? ? holder.price.setText(groups.get(i).getChildren().get(i1).getPrice()+"");
? ? ? ? if (mOnNumChangeListener != null&&mOnShouldChangeMoneyListener != null){
? ? ? ? ? ? holder.jian.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? ? ? mOnNumChangeListener.onNumChange(i,i1,false);
? ? ? ? ? ? ? ? ? ? mOnShouldChangeMoneyListener.onShouldChnageMoney();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? if (mOnNumChangeListener != null&&mOnShouldChangeMoneyListener != null){
? ? ? ? ? ? holder.jia.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? ? ? mOnNumChangeListener.onNumChange(i,i1,true);
? ? ? ? ? ? ? ? ? ? mOnShouldChangeMoneyListener.onShouldChnageMoney();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? if (mOnCheckChangeListener != null&&mOnShouldChangeMoneyListener != null){
? ? ? ? ? ? holder.checkBox.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? ? ? mOnCheckChangeListener.onChildClick(i,i1);
? ? ? ? ? ? ? ? ? ? mOnShouldChangeMoneyListener.onShouldChnageMoney();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? ? ? return view;
? ? }

? ? @Override
? ? public boolean isChildSelectable(int i, int i1) {
? ? ? ? return true;
? ? }
? ? class GroupHolder {
? ? ? ? CheckBox checkBox;
? ? }
? ? class ChildHolder{
? ? ? ? CheckBox checkBox;
? ? ? ? ImageView imageView;
? ? ? ? TextView name,num,jian,jia,price;
? ? }
}

MainActivity:

package com.bwie.test.test1025two;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

? ? TextView num,price;//右上角當前商品數(shù)量和底部當前已選中商品的價格
? ? ExpandableListView expandableListView;//展示商品信息的二級列表
? ? CheckBox checkAll;//左下角全選
? ? Button btnDel,btnBuy;//底部刪除當前選中按鈕、購買按鈕
? ? ArrayList<Group> groups = new ArrayList<>();//數(shù)據(jù)源集合
? ? MyAdapter adapter;//自定義baseExpandable適配器
? ? @Override
? ? protected void onCreate(Bundle savedInstanceState) {
? ? ? ? super.onCreate(savedInstanceState);
? ? ? ? setContentView(R.layout.activity_main);
? ? ? ? initView();//控件初始化
? ? ? ? initData();//數(shù)據(jù)初始化
? ? ? ? changeGoodsNum();//初始化當前商品個數(shù)。
? ? ? ? /**
? ? ? ? ?* 自定義加減按鈕回調
? ? ? ? ?* params: groupID:商鋪id ?childID:商品在當前商鋪的id isADD:非加即減
? ? ? ? ?*/
? ? ? ? adapter.setOnNumChangeListener(new MyAdapter.onNumChangeListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onNumChange(int groupID, int childID, boolean isAdd) {
? ? ? ? ? ? ? ? //獲得當前點擊商品的數(shù)量
? ? ? ? ? ? ? ? int num = groups.get(groupID).getChildren().get(childID).getNum();
? ? ? ? ? ? ? ? if (isAdd){//加
? ? ? ? ? ? ? ? ? ? //在數(shù)據(jù)源中該商品數(shù)量自增1
? ? ? ? ? ? ? ? ? ? groups.get(groupID).getChildren().get(childID).setNum(++num);
? ? ? ? ? ? ? ? }else{//減
? ? ? ? ? ? ? ? ? ? if (num == 1){//數(shù)量為1給出提示
? ? ? ? ? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this, "受不了了,不能再少了", Toast.LENGTH_SHORT).show();
? ? ? ? ? ? ? ? ? ? }else{//在數(shù)據(jù)源中該商品數(shù)量自減1
? ? ? ? ? ? ? ? ? ? ? ? groups.get(groupID).getChildren().get(childID).setNum(--num);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //更新UI
? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
? ? ? ? ? ? ? ? changeMoney();//更新價格顯示
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //自定義商鋪和商品多選框點擊回調
? ? ? ? adapter.setmOnCheckChangeListener(new MyAdapter.onCheckChangeListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onGroupClick(int groupID) {//組點擊
? ? ? ? ? ? ? ? //將數(shù)據(jù)源置反,以保持同步
? ? ? ? ? ? ? ? groups.get(groupID).setCheck(!(groups.get(groupID).isCheck()));
? ? ? ? ? ? ? ? //獲取當前選中狀態(tài)
? ? ? ? ? ? ? ? boolean flag = groups.get(groupID).isCheck();
? ? ? ? ? ? ? ? //更新其下所有商品CheckBox
? ? ? ? ? ? ? ? for (int i = 0 ; i < groups.get(groupID).getChildren().size(); i++){
? ? ? ? ? ? ? ? ? ? groups.get(groupID).getChildren().get(i).setCheck(flag);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //更新UI
? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
? ? ? ? ? ? ? ? //更新價格顯示
? ? ? ? ? ? ? ? changeMoney();
? ? ? ? ? ? }

? ? ? ? ? ? @Override
? ? ? ? ? ? public void onChildClick(int groupID, int childID) {//商品點擊
? ? ? ? ? ? ? ? //將數(shù)據(jù)源置反以保持同步
? ? ? ? ? ? ? ? groups.get(groupID).getChildren().get(childID).setCheck(!(groups.get(groupID).getChildren().get(childID).isCheck()));
? ? ? ? ? ? ? ? //判斷該條目及所有兄弟條目是否全部選中,以及時更新商鋪CheckBox
? ? ? ? ? ? ? ? int flag = 0;
? ? ? ? ? ? ? ? for (int i = 0 ; i < groups.get(groupID).getChildren().size() ; i++){
? ? ? ? ? ? ? ? ? ? if (groups.get(groupID).getChildren().get(i).isCheck()){
? ? ? ? ? ? ? ? ? ? ? ? flag++;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //如果該組下的選中數(shù)量與該集合長度相等,說明全部選中,更新組CheckBox
? ? ? ? ? ? ? ? if (flag == groups.get(groupID).getChildren().size()){
? ? ? ? ? ? ? ? ? ? groups.get(groupID).setCheck(true);
? ? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ? groups.get(groupID).setCheck(false);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //更新UI
? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
? ? ? ? ? ? ? ? //更新價格顯示
? ? ? ? ? ? ? ? changeMoney();
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //刪除按鈕點擊
? ? ? ? btnDel.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? List<Group> toBeDeleteGroups = new ArrayList<Group>();// 待刪除的組元素列表
? ? ? ? ? ? ? ? for (int i = 0; i < groups.size(); i++) {
? ? ? ? ? ? ? ? ? ? Group group = groups.get(i);
? ? ? ? ? ? ? ? ? ? if (group.isCheck()) {

? ? ? ? ? ? ? ? ? ? ? ? toBeDeleteGroups.add(group);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? List<Child> toBeDeleteChildren = new ArrayList<Child>();// 待刪除的子元素列表
? ? ? ? ? ? ? ? ? ? List<Child> childs = group.getChildren();
? ? ? ? ? ? ? ? ? ? for (int j = 0; j < childs.size(); j++) {
? ? ? ? ? ? ? ? ? ? ? ? if (childs.get(j).isCheck()) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? toBeDeleteChildren.add(childs.get(j));
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? childs.removeAll(toBeDeleteChildren);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? groups.removeAll(toBeDeleteGroups);
? ? ? ? ? ? ? ? //更新UI
? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
? ? ? ? ? ? ? ? //更新當前商品數(shù)量顯示
? ? ? ? ? ? ? ? changeGoodsNum();
? ? ? ? ? ? ? ? //更新當前價格顯示
? ? ? ? ? ? ? ? changeMoney();

? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //購買按鈕,點擊提示當前選中金額
? ? ? ? btnBuy.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? String money = price.getText().toString();
? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this, "當前總金額:"+money, Toast.LENGTH_SHORT).show();
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //全選按鈕,點擊更新視圖所有CheckBox
? ? ? ? checkAll.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onClick(View view) {
? ? ? ? ? ? ? ? for (int i = 0 ; i< groups.size() ; i++){
? ? ? ? ? ? ? ? ? ? groups.get(i).setCheck(checkAll.isChecked());
? ? ? ? ? ? ? ? ? ? for (int j = 0 ; j < groups.get(i).getChildren().size() ; j ++){
? ? ? ? ? ? ? ? ? ? ? ? groups.get(i).getChildren().get(j).setCheck(checkAll.isChecked());
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //更新UI
? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();
? ? ? ? ? ? ? ? //更新總價顯示
? ? ? ? ? ? ? ? changeMoney();
? ? ? ? ? ? }
? ? ? ? });
? ? ? ? //自定義回調更新總價
? ? ? ? adapter.setmOnShouldChangeMoneyListener(new MyAdapter.onShouldChangeMoneyListener() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onShouldChnageMoney() {
? ? ? ? ? ? ? ? //更新總價顯示
? ? ? ? ? ? ? ? changeMoney();
? ? ? ? ? ? }
? ? ? ? });
? ? }

? ? //初始化數(shù)據(jù),設置適配器
? ? private void initData() {
? ? ? ? for (int i = 0 ; i < 5 ; i++){
? ? ? ? ? ? ArrayList<Child> children = new ArrayList<>();
? ? ? ? ? ? for (int j = 0 ; j <= i ; j++){
? ? ? ? ? ? ? ? children.add(new Child("店鋪"+i+"的商品:"+j,"",2,false,j+1));
? ? ? ? ? ? }
? ? ? ? ? ? groups.add(new Group("商鋪:"+i,false,children));
? ? ? ? }
? ? ? ? adapter = new MyAdapter(this,groups);
? ? ? ? expandableListView.setAdapter(adapter);
? ? ? ? for (int i = 0; i < groups.size(); i++)
? ? ? ? {
? ? ? ? ? ? expandableListView.expandGroup(i);// 初始化時,將ExpandableListView以展開的方式呈現(xiàn)
? ? ? ? }
? ? }

? ? //獲得控件資源
? ? private void initView() {
? ? ? ? num = (TextView) findViewById(R.id.main_num);
? ? ? ? expandableListView = (ExpandableListView) findViewById(R.id.expand_able_view);
? ? ? ? checkAll = (CheckBox) findViewById(R.id.main_check_all);
? ? ? ? btnDel = (Button) findViewById(R.id.btn_delete);
? ? ? ? btnBuy = (Button) findViewById(R.id.btn_buy);
? ? ? ? price = (TextView) findViewById(R.id.main_price);
? ? }

? ? //當前購物車商品數(shù)量
? ? private void changeGoodsNum(){
? ? ? ? int currentNum = 0;
? ? ? ? for (int i = 0 ; i < groups.size(); i++){
? ? ? ? ? ? for (int j = 0 ; j < groups.get(i).getChildren().size(); j++){
? ? ? ? ? ? ? ? currentNum++;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? num.setText(currentNum+"");
? ? }
? ? //更新總價
? ? private void changeMoney(){
? ? ? ? int money = 0;
? ? ? ? int allMoney = 0;//獲得當前全部商品價格
? ? ? ? for (int i = 0 ; i < groups.size(); i++){
? ? ? ? ? ? for (int j = 0 ; j < groups.get(i).getChildren().size(); j++){
? ? ? ? ? ? ? ? if (groups.get(i).getChildren().get(j).isCheck()){
? ? ? ? ? ? ? ? ? ? money += groups.get(i).getChildren().get(j).getNum() * groups.get(i).getChildren().get(j).getPrice();
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? allMoney += groups.get(i).getChildren().get(j).getNum() * groups.get(i).getChildren().get(j).getPrice();
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //當選中價格與全部價格相等,更新全選框
? ? ? ? if (money == allMoney){
? ? ? ? ? ? checkAll.setChecked(true);
? ? ? ? }else{
? ? ? ? ? ? checkAll.setChecked(false);
? ? ? ? }
? ? ? ? price.setText(money + "");
? ? }
}

效果圖:

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

相關文章

最新評論