仿淘宝购物车

来源:互联网 发布:linux c语言网络编程 编辑:程序博客网 时间:2024/04/28 17:19

activity_main

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" ><LinearLayoutandroid:id="@+id/layout1"android:layout_width="match_parent"android:layout_height="40dp"android:layout_gravity="center"android:layout_marginTop="20dp"android:background="@color/white"android:orientation="horizontal" ><LinearLayout    android:layout_width="0dp"    android:layout_height="match_parent"    android:layout_marginLeft="10dp"    android:layout_weight="1"    android:gravity="center_vertical"    android:orientation="horizontal" >    <CheckBox        android:id="@+id/checkbox_select"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="10dp"        android:text="全选"        android:textColor="@color/gry_666666"        android:textSize="20dp" /></LinearLayout><LinearLayout    android:id="@+id/clear"    android:layout_width="wrap_content"    android:layout_height="match_parent"    android:layout_marginRight="20dp"    android:gravity="center_vertical|right"    android:orientation="horizontal" >    <CheckBox        android:layout_width="12dp"        android:layout_height="12dp" />        <!--android:background="@drawable/clear"-->    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_marginLeft="5dp"        android:text="清空购物车"        android:textColor="#b61d1d"        android:textSize="20dp" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/layout1"android:layout_marginBottom="50dp"android:orientation="vertical" ><View    android:layout_width="match_parent"    android:layout_height="0.1dp"    android:background="@color/divider_color" /><ListView    android:id="@+id/finance_list"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:clickable="false"    android:divider="@color/lucency" /><!--<include-->    <!--layout="@layout/include_refresh"-->    <!--android:visibility="gone" />--></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:orientation="horizontal" ><LinearLayout    android:layout_width="0dp"    android:layout_height="match_parent"    android:layout_weight="2"    android:background="@color/gry_999999"    android:gravity="center_vertical"    android:orientation="horizontal" >    <LinearLayout        android:layout_width="wrap_content"        android:layout_height="match_parent"        android:layout_marginLeft="5dp"        android:layout_marginRight="5dp"        android:gravity="center"        android:orientation="horizontal" >        <CheckBox            android:id="@+id/checkbox_add"            android:layout_width="wrap_content"            android:clickable="false"            android:layout_height="wrap_content" />    </LinearLayout>    <LinearLayout        android:layout_width="0dp"        android:layout_height="match_parent"        android:layout_weight="1"        android:gravity="center"        android:orientation="horizontal" >        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="合计:"            android:textColor="@color/white"            android:textSize="20dp" />        <TextView            android:id="@+id/integral_sum"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="5dp"            android:layout_marginRight="5dp"            android:text="0"            android:textColor="@color/theme_color"            android:textSize="15dp" />        <TextView            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="积分"            android:textColor="@color/white"            android:textSize="15dp" />    </LinearLayout></LinearLayout><TextView    android:layout_width="0dp"    android:layout_height="match_parent"    android:layout_weight="1"    android:background="@color/theme_color"    android:gravity="center"    android:text="结算"    android:textColor="@color/white"    android:textSize="20dp" /></LinearLayout>    </RelativeLayout>

list_shopping_cart_item

<?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="match_parent"              android:descendantFocusability="blocksDescendants"              android:background="@color/white"              android:orientation="vertical" >    <View        android:layout_width="match_parent"        android:layout_height="0.1dp"        android:background="@color/divider_color" />    <LinearLayout        android:id="@+id/layout5"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center_vertical"        android:orientation="horizontal"        android:padding="5dp" >        <CheckBox            android:id="@+id/ck_select"            android:layout_width="wrap_content"            android:focusable="false"            android:layout_height="wrap_content"            android:layout_marginRight="5dp" />        <ImageView            android:id="@+id/pic_goods"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:scaleType="fitCenter"            android:src="@mipmap/ic_launcher" />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginLeft="10dp"            android:orientation="vertical" >            <TextView                android:id="@+id/id_goods"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="短袜男士星期 POLO棉袜潮男秋冬款礼盒装"                android:textColor="@color/gry_999999"                android:textSize="10dp" />            <LinearLayout                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="horizontal" >                <LinearLayout                    android:layout_width="wrap_content"                    android:layout_height="wrap_content"                    android:orientation="vertical" >                    <LinearLayout                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:orientation="horizontal" >                        <TextView                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="颜色:"                            android:textColor="@color/gry_999999"                            android:textSize="12sp" />                        <TextView                            android:id="@+id/color_goods"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="黑色"                            android:textColor="@color/gry_999999"                            android:textSize="12sp" />                    </LinearLayout>                    <LinearLayout                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:orientation="horizontal" >                        <TextView                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="规格:"                            android:textColor="@color/gry_999999"                            android:textSize="12sp" />                        <TextView                            android:id="@+id/type_goods"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="普通"                            android:textColor="@color/gry_999999"                            android:textSize="12sp" />                    </LinearLayout>                    <LinearLayout                        android:layout_width="wrap_content"                        android:layout_height="wrap_content"                        android:orientation="horizontal" >                        <TextView                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="所需积分"                            android:textColor="@color/theme_color"                            android:textSize="12sp" />                        <TextView                            android:id="@+id/integral_goods"                            android:layout_width="wrap_content"                            android:layout_height="wrap_content"                            android:text="1000"                            android:layout_marginLeft="5dp"                            android:textColor="@color/theme_color"                            android:textSize="12sp" />                    </LinearLayout>                </LinearLayout>                <LinearLayout                    android:layout_width="match_parent"                    android:layout_height="25dp"                    android:layout_gravity="bottom"                    android:layout_marginBottom="5dp"                    android:layout_marginRight="5dp"                    android:gravity="right"                    android:orientation="horizontal" >                    <LinearLayout                        android:layout_width="80dp"                        android:layout_height="25dp"                        android:layout_gravity="right"                        android:background="@color/white"                        android:orientation="horizontal" >                        <Button                            android:id="@+id/minus"                            android:layout_width="30dp"                            android:layout_height="match_parent"                            android:gravity="center"                            android:focusable="false"                            android:text="-"                            android:textColor="@color/black" >                        </Button>                        <TextView                            android:id="@+id/number"                            android:layout_width="30dp"                            android:layout_height="match_parent"                            android:gravity="center"                            android:inputType="number"                            android:text="1"                            android:textColor="@color/black" >                        </TextView>                        <Button                            android:id="@+id/plus"                            android:layout_width="25dp"                            android:layout_height="match_parent"                            android:gravity="center"                            android:focusable="false"                            android:text="+"                            android:textColor="@color/black" >                        </Button>                    </LinearLayout>                </LinearLayout>            </LinearLayout>        </LinearLayout>    </LinearLayout>    <View        android:layout_width="match_parent"        android:layout_height="0.1dp"        android:background="@color/divider_color" /></LinearLayout>

ShoppingCartActivity

BaseActivity 什么都没有public class ShoppingCartActivity extends BaseActivity {    private List<Test> data;    private ListView mListView;    private ShoppingCartAdapter adapter;    private RelativeLayout rlRefresh;    private TextView tvRefresh;    private ProgressBar barRefresh;    private LinearLayout clear;    private CheckBox checkBox_select_all;    private CheckBox checkBox_add;    private TextView integral_sum;    private int sum = 0;    private int[] sumIntegral;    private Context context;    private int showpage;    private boolean isPermitFlag;    protected void onCreate(Bundle bundle) {        // TODO Auto-generated method stub        super.onCreate(bundle);        setContentView(R.layout.activity_main);        initView();    }    private void initView() {        context = this;        showpage = 1;        isPermitFlag = true;        data = new ArrayList<Test>();        // 测试数据        data.add(new Test("id", "color", "type", "100"));        data.add(new Test("id", "color", "type", "200"));        data.add(new Test("id", "color", "type", "300"));        data.add(new Test("id", "color", "type", "0"));        data.add(new Test("id", "color", "type", "300"));        data.add(new Test("id", "color", "type", "100"));        data.add(new Test("id", "color", "type", "500"));        data.add(new Test("id", "color", "type", "0"));        data.add(new Test("id", "color", "type", "900"));        adapter = new ShoppingCartAdapter(context, handler, data);        sumIntegral = new int[data.size() + 1];        checkBox_add = (CheckBox) findViewById(R.id.checkbox_add);        integral_sum = (TextView) findViewById(R.id.integral_sum);        clear = (LinearLayout) findViewById(R.id.clear);        clear.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                data.clear();                List<String> listclearalter= adapter.getclearlter();                adapter.notifyDataSetChanged();                integral_sum.setText(0 + "");                checkBox_select_all.setChecked(false);                checkBox_add.setClickable(false);            }        });        checkBox_select_all = (CheckBox) findViewById(R.id.checkbox_select);        checkBox_select_all.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                HashMap<Integer, Boolean> isSelected = ShoppingCartAdapter                        .getIsSelected();                Iterator iterator = isSelected.entrySet().iterator();                List<Boolean> array = new ArrayList<Boolean>();//列表中checkbox选中状态                List<Integer> nums = new ArrayList<Integer>();//列表中商品数量                while (iterator.hasNext()) {                    HashMap.Entry entry = (HashMap.Entry) iterator.next();                    Integer key = (Integer) entry.getKey();                    Boolean val = (Boolean) entry.getValue();                    array.add(val);                }                for (int i = 0; i < data.size(); i++) {                    int num = data.get(i).getNum();                    int integral = Integer.valueOf(data.get(i).getIntegral());                    nums.add(num);                }                if (checkBox_select_all.isChecked()) {                    for (int i = 0; i < data.size(); i++) {                        ShoppingCartAdapter.getIsSelected().put(i, true);                    }                    checkBox_add.setChecked(true);                    adapter.notifyDataSetChanged();                } else {                    for (int i = 0; i < data.size(); i++) {                        ShoppingCartAdapter.getIsSelected().put(i, false);                    }                    checkBox_add.setChecked(false);                    adapter.notifyDataSetChanged();                    integral_sum.setText(0 + "");                }            }        });        mListView= (ListView) findViewById(R.id.finance_list);        mListView.setAdapter(adapter);        mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view,                                    int position, long id) {                int pos = position;                int num = data.get(pos).getNum();                if (num == 0) {                    Toast.makeText(context, "请选择商品数量", Toast.LENGTH_LONG)                            .show();                } else {                    boolean cu = !ShoppingCartAdapter.getIsSelected().get(pos);                    ShoppingCartAdapter.getIsSelected().put(pos, cu);                    adapter.notifyDataSetChanged();                    //遍历获取列表中checkbox的选中状态                    HashMap<Integer, Boolean> isSelected = ShoppingCartAdapter                            .getIsSelected();                    Iterator iterator = isSelected.entrySet().iterator();                    List<Boolean> array = new ArrayList<Boolean>();                    while (iterator.hasNext()) {                        HashMap.Entry entry = (HashMap.Entry) iterator.next();                        Integer key = (Integer) entry.getKey();                        Boolean val = (Boolean) entry.getValue();                        array.add(val);                    }                    if (Test.isAllFalse(array)) {                        checkBox_select_all.setChecked(false);                        checkBox_add.setChecked(false);                    }                    if (Test.isAllTrue(array)) {                        checkBox_select_all.setChecked(true);                        checkBox_add.setChecked(true);                    }                    if (Test.isHaveOneFasle(array)) {                        checkBox_select_all.setChecked(false);                    }                    if (Test.isHaveOneTrue(array)) {                        checkBox_add.setChecked(true);                    }                }            }        });    }    @SuppressLint("HandlerLeak")    private Handler handler = new Handler(){        @SuppressWarnings("unchecked")        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if(msg.what == 10){ //更改选中商品的总价格                float price = (Float)msg.obj;                if(price > 0){                    integral_sum.setText(price+"");                }else{                    integral_sum.setText("0");                }            }            else if(msg.what == 11){                //列表选中状态                List<Boolean> array = (List<Boolean>) msg.obj;                if (com.example.mygouwu.Test.isAllFalse(array)) {                    checkBox_select_all.setChecked(false);                    checkBox_add.setChecked(false);                }                if (Test.isAllTrue(array)) {                    checkBox_select_all.setChecked(true);                    checkBox_add.setChecked(true);                }                if (Test.isHaveOneFasle(array)) {                    checkBox_select_all.setChecked(false);                }                if (Test.isHaveOneTrue(array)) {                    checkBox_add.setChecked(true);                }            }        }    };}
ppingCartAdapter extends BaseAdapter  {    private Context context;    private List<Test> loans;    private LayoutInflater inflater;    private static HashMap<Integer, Boolean> isSelected;    private static HashMap<Integer, Integer> numbers;    private Handler handler;    int num;// 商品数量    private List<String> listclearalter;    static class ViewHolder { // 自定义控件集合        public CheckBox ck_select;        public ImageView pic_goods;        public TextView id_goods;        public TextView color_goods;        public TextView type_goods;        public TextView integral_goods;//        public AddMinusWidget add_minus;        public LinearLayout layout;        public TextView number;        public Button minus;        public Button plus;    }    /**     * 实例化Adapter     *     * @param context     * @param data     */    public ShoppingCartAdapter(Context context, Handler handler, List<Test> data) {        this.context = context;        this.inflater = LayoutInflater.from(context);        this.loans = data;        this.handler = handler;        isSelected = new HashMap<Integer, Boolean>();        numbers = new HashMap<Integer, Integer>();        initDate();    }    private void initDate() {        for (int i = 0; i < loans.size(); i++) {            getIsSelected().put(i, false);            getNumbers().put(i, 1);        }    }    public int getCount() {        return loans.size();    }    public Object getItem(int position) {        return loans.get(position);    }    public long getItemId(int position) {        return position;    }    public View getView(final int position, View convertView, ViewGroup parent) {        // 自定义视图        ViewHolder itemView = null;        if (convertView == null) {            // 获取list_item布局文件的视图            itemView = new ViewHolder();            convertView = inflater.inflate(R.layout.list_shopping_cart_item,                    null);            // 获取控件对象            itemView.ck_select = (CheckBox) convertView                    .findViewById(R.id.ck_select);            itemView.pic_goods = (ImageView) convertView                    .findViewById(R.id.pic_goods);            itemView.id_goods = (TextView) convertView                    .findViewById(R.id.id_goods);            itemView.color_goods = (TextView) convertView                    .findViewById(R.id.color_goods);            itemView.type_goods = (TextView) convertView                    .findViewById(R.id.type_goods);            itemView.integral_goods = (TextView) convertView                    .findViewById(R.id.integral_goods);            itemView.number = (TextView) convertView.findViewById(R.id.number);            itemView.minus = (Button) convertView.findViewById(R.id.minus);            itemView.plus = (Button) convertView.findViewById(R.id.plus);            convertView.setTag(itemView);        } else {            itemView = (ViewHolder) convertView.getTag();        }        init(itemView, position);        itemView.ck_select.setChecked(getIsSelected().get(position));        itemView.number.setText(getNumbers().get(position).toString());        if (getIsSelected().get(position)) {            itemView.ck_select.setChecked(true);        } else {            itemView.ck_select.setChecked(false);        }        String a = itemView.number.getText().toString();        loans.get(position).setNum(Integer.valueOf(a));        Test test = loans.get(position);        itemView.id_goods.setText((CharSequence) test.getId());        itemView.color_goods.setText((CharSequence) test.getColor());        itemView.type_goods.setText((CharSequence) test.getType());        itemView.integral_goods.setText((CharSequence) test.getIntegral());        itemView.pic_goods.setImageResource(R.mipmap.ic_launcher);        return convertView;    }    private void init(final ViewHolder itemView, final int position) {        itemView.ck_select                .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {                    @Override                    public void onCheckedChanged(CompoundButton buttonView,                                                 boolean isChecked) {                        isSelected.put(position, true);                        getIsSelected().put(position, isChecked);                        itemView.ck_select.setChecked(getIsSelected().get(                                position));                        listclearalter = new ArrayList<String>();                        if (itemView.ck_select.isChecked()==true){                            listclearalter.add(itemView+"");                        }                        handler.sendMessage(handler.obtainMessage(10,                                getTotalPrice()));                        Iterator iterator = isSelected.entrySet().iterator();                        List<Boolean> array = new ArrayList<Boolean>();                        while (iterator.hasNext()) {                            HashMap.Entry entry = (HashMap.Entry) iterator                                    .next();                            Integer key = (Integer) entry.getKey();                            Boolean val = (Boolean) entry.getValue();                            array.add(val);                        }                        handler.sendMessage(handler.obtainMessage(11, array));                    }                });        final String numString = itemView.number.getText().toString();        itemView.plus.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (numString == null || numString.equals("")) {                    num = 1;                    itemView.number.setText("1");                } else {                    if (++num < 1) // 先加,再判断                    {                        num--;                        Toast.makeText(context, "请输入一个大于0的数字",                                Toast.LENGTH_SHORT).show();                    } else {                        itemView.number.setText(String.valueOf(num));                        loans.get(position).setNum(num);                        numbers.put(position, num);                        handler.sendMessage(handler.obtainMessage(10,                                getTotalPrice()));                        Log.i("test", "+:" + num);                    }                }            }        });        itemView.minus.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                if (numString == null || numString.equals("")) {                    num = 1;                    itemView.number.setText("1");                } else {                    if (--num < 1) // 先加,再判断                    {                        num++;                        Log.i("test", "-:" + num);                        Toast.makeText(context, "请输入一个大于0的数字",                                Toast.LENGTH_SHORT).show();                        Log.i("test", "-:" + num);                    } else {                        itemView.number.setText(String.valueOf(num));                        Log.i("test", "-:" + num);                        loans.get(position).setNum(num);                        numbers.put(position, num);                        handler.sendMessage(handler.obtainMessage(10,                                getTotalPrice()));                    }                }            }        });    }    /**     * 计算选中商品的积分     *     * @return 返回需要付费的总积分     */    private float getTotalPrice() {        Test bean = null;        float totalPrice = 0;        for (int i = 0; i < loans.size(); i++) {            bean = loans.get(i);            if (ShoppingCartAdapter.getIsSelected().get(i)) {                totalPrice += bean.getNum()                        * Integer.valueOf(bean.getIntegral());            }        }        return totalPrice;    }    public   List<String>  getclearlter( ){return listclearalter;}    public static HashMap<Integer, Boolean> getIsSelected() {        return isSelected;    }    public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {        ShoppingCartAdapter.isSelected = isSelected;    }    public static HashMap<Integer, Integer> getNumbers() {        return numbers;    }    public static void setNumbers(HashMap<Integer, Integer> numbers) {        ShoppingCartAdapter.numbers = numbers;    }}

Test

package com.example.mygouwu;import java.util.List;/** * com.example.mygouwu * 徐世辉  1503A * 类作用:本类--- * 思路: * 1. * 2. * 3. * 2017/6/28 14:24 */public class Test {    @Override    public String toString() {        return "test [id=" + id + ", color=" + color                + ", type=" + type + ", integral=" + integral + "]";    }    public String getId() {        return id;    }    public void setId(String id) {        this.id = id;    }    public String getColor() {        return color;    }    public void setColor(String color) {        this.color = color;    }    public String getType() {        return type;    }    public void setType(String type) {        this.type = type;    }    public String getIntegral() {        return integral;    }    public void setIntegral(String integral) {        this.integral = integral;    }    private String id;    private String color;    private String type;    private String integral;    private int num;//商品数量    private int sumIntegral;    private boolean isChoosed;   //商品是否在购物车中被选中    public Test(String id, String color, String type, String integral) {        super();        this.id = id;        this.color = color;        this.type = type;        this.integral = integral;    }    public Test() {        super();    }    public int getNum() {        return num;    }    public void setNum(int num) {        this.num = num;    }    public int getSumIntegral() {        return sumIntegral;    }    public void setSumIntegral(int sumIntegral) {        this.sumIntegral = sumIntegral;    }    public boolean isChoosed() {        return isChoosed;    }    public void setChoosed(boolean isChoosed) {        this.isChoosed = isChoosed;    }    public static boolean isAllFalse(List<Boolean> array) {        return false;    }    public static boolean isAllTrue(List<Boolean> array) {        return false;    }    public static boolean isHaveOneFasle(List<Boolean> array) {        return false;    }    public static boolean isHaveOneTrue(List<Boolean> array) {        return false;    }}