
主要代码如下:
actvity中的代码:
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;@Overrideprotected void onCreate(Bundle bundle) {// TODO Auto-generated method stubsuper.onCreate(bundle);setContentView(R.layout.activity_shopping_cart);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 OnClickListener() {@Overridepublic void onClick(View v) {data.clear();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 OnClickListener() {@Overridepublic 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 OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {Toast.makeText(context, position + "", Toast.LENGTH_LONG).show();int pos = position - 1;ViewHolder viewHolder = (ViewHolder) view.getTag();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")@Overridepublic 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 (Test.isAllFalse(array)) {checkBox_select_all.setChecked(false);checkBox_add.setChecked(false);}if (.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);}}}};actvity中XML的代码:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:header=http://schemas.android.com/apk/res/com.sxc.test"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/app_background"android:orientation="vertical" ><com.autoserve.core.widget.HeaderWidgetandroid:id="@+id/header"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignParentTop="true"header:text="我的购物车" /><LinearLayoutandroid:id="@+id/layout1"android:layout_width="match_parent"android:layout_height="40dp"android:layout_below="@id/header"android:layout_gravity="center"android:layout_marginTop="20dp"android:background="@color/white"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_marginLeft="10dp"android:layout_weight="1"android:gravity="center_vertical"android:orientation="horizontal" ><CheckBoxandroid:id="@+id/checkbox_select"style="@style/CustomCheckboxTheme"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:text="全选"android:textColor="@color/gry_666666"android:textSize="@dimen/small_size" /></LinearLayout><LinearLayoutandroid: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" ><CheckBoxandroid:layout_width="12dp"android:layout_height="12dp"android:background="@drawable/clear" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="5dp"android:text="清空购物车"android:textColor="#b61d1d"android:textSize="@dimen/small_size" /></LinearLayout></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_below="@id/layout1"android:layout_marginBottom="50dp"android:orientation="vertical" ><Viewandroid:layout_width="match_parent"android:layout_height="0.1dp"android:background="@color/divider_color" /><ListViewandroid:id="@+id/finance_list"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="false"android:divider="@color/lucency" /><includelayout="@layout/include_refresh"android:visibility="gone" /></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="50dp"android:layout_alignParentBottom="true"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="2"android:background="@color/gry_999999"android:gravity="center_vertical"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:layout_marginLeft="5dp"android:layout_marginRight="5dp"android:gravity="center"android:orientation="horizontal" ><CheckBoxandroid:id="@+id/checkbox_add"style="@style/CustomCheckboxTheme2"android:layout_width="wrap_content"android:clickable="false"android:layout_height="wrap_content" /></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="match_parent"android:layout_weight="1"android:gravity="center"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="合计:"android:textColor="@color/white"android:textSize="@dimen/small_size" /><TextViewandroid: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="@dimen/small_size" /><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="积分"android:textColor="@color/white"android:textSize="@dimen/small_size" /></LinearLayout></LinearLayout><TextViewandroid: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="@dimen/small_size" /></LinearLayout></RelativeLayout>-XML中头部可以到网上找一个这里就不放上来了
public class ShoppingCartAdapter 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;// 商品数量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);}}@Overridepublic int getCount() {return loans.size();}@Overridepublic Object getItem(int position) {return loans.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic 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.drawable.shopping);return convertView;}private void init(final ViewHolder itemView, final int position) {itemView.ck_select.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {isSelected.put(position, true);getIsSelected().put(position, isChecked);itemView.ck_select.setChecked(getIsSelected().get(position));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 OnClickListener() {@Overridepublic 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 OnClickListener() {@Overridepublic 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 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;}}Adapter中的XML代码:<?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" ><Viewandroid:layout_width="match_parent"android:layout_height="0.1dp"android:background="@color/divider_color" /><LinearLayoutandroid:id="@+id/layout5"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:orientation="horizontal"android:padding="5dp" ><CheckBoxandroid:id="@+id/ck_select"style="@style/CustomCheckboxTheme"android:layout_width="wrap_content"android:focusable="false"android:layout_height="wrap_content"android:layout_marginRight="5dp" /><ImageViewandroid:id="@+id/pic_goods"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="fitCenter"android:src="@drawable/shopping" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:orientation="vertical" ><TextViewandroid:id="@+id/id_goods"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="短袜男士星期 POLO棉袜潮男秋冬款礼盒装"android:textColor="@color/gry_999999"android:textSize="@dimen/small_size" /><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical" ><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="颜色:"android:textColor="@color/gry_999999"android:textSize="12sp" /><TextViewandroid: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><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="规格:"android:textColor="@color/gry_999999"android:textSize="12sp" /><TextViewandroid: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><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal" ><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="所需积分"android:textColor="@color/theme_color"android:textSize="12sp" /><TextViewandroid: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><LinearLayoutandroid: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" ><LinearLayoutandroid:layout_width="80dp"android:layout_height="25dp"android:layout_gravity="right"android:background="@color/white"android:orientation="horizontal" ><Buttonandroid:id="@+id/minus"android:layout_width="25dp"android:layout_height="match_parent"android:background="@drawable/kuangzi1"android:gravity="center"android:focusable="false"android:text="-"android:textColor="@color/black" ></Button><TextViewandroid:id="@+id/number"android:layout_width="30dp"android:layout_height="match_parent"android:background="@drawable/kuangzi1"android:gravity="center"android:inputType="number"android:text="1"android:textColor="@color/black" ></TextView><Buttonandroid:id="@+id/plus"android:layout_width="25dp"android:layout_height="match_parent"android:background="@drawable/kuangzi1"android:gravity="center"android:focusable="false"android:text="+"android:textColor="@color/black" ></Button></LinearLayout></LinearLayout></LinearLayout></LinearLayout></LinearLayout><Viewandroid:layout_width="match_parent"android:layout_height="0.1dp"android:background="@color/divider_color" /></LinearLayout>实体类:
package com.autoserve.net33.model;public class Test {@Overridepublic 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;}}以上就是本文的全部内容,祝大家在新的一年里工作顺利,事事顺心,我们大家共同努力。