商城app_购物车

来源:互联网 发布:网络销售推广 编辑:程序博客网 时间:2024/04/28 23:36


先看效果:

 





主界面:

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车界面 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class ShoppingCartPage extends BaseFragment implements OnClickListener {  
  8.     @ViewInject(R.id.lv_shopping_cart)  
  9.     private ListView lv_shopping_cart;// 购物车  
  10.     // 底部条  
  11.     @ViewInject(R.id.cb_select_all)  
  12.     private CheckBox cb_select_all;// 全选  
  13.     @ViewInject(R.id.tv_total)  
  14.     private TextView tv_total;// 总计  
  15.     @ViewInject(R.id.tv_checkout)  
  16.     private TextView tv_checkout;// 结账  
  17.   
  18.     public static final String FRAGMENT_NAME = "购物车";  
  19.     private SC_ShopAdapter adapter;  
  20.     private List<JsShoppingCartItem> sCartData;  
  21.   
  22.     private List<JsGoodsItem> selGoodsList = new ArrayList<JsGoodsItem>();// 已经选择的商品集合  
  23.     private float actualPayment;// 实际付款  
  24.   
  25.     @Override  
  26.     public View initView(LayoutInflater inflater) {  
  27.         view = inflater.inflate(R.layout.fragment_shopping_cart, null);  
  28.         ViewUtils.inject(this, view);  
  29.         return view;  
  30.     }  
  31.   
  32.     @Override  
  33.     public void initData(Bundle savedInstanceState) {  
  34.         MainActivity orderMange = (MainActivity) getActivity();  
  35.         orderMange.tv_title.setText(FRAGMENT_NAME);  
  36.         getSCData();  
  37.   
  38.         adapter = new SC_ShopAdapter(this, sCartData);  
  39.         lv_shopping_cart.setAdapter(adapter);  
  40.         Util.setListViewHeight(lv_shopping_cart);  
  41.   
  42.     }  
  43.   
  44.     private void getSCData() {  
  45.         sCartData = new ArrayList<JsShoppingCartItem>();  
  46.   
  47.         for (int i = 0; i < 5; i++) {  
  48.             JsShoppingCartItem scItem = new JsShoppingCartItem();  
  49.             scItem.id = "id";  
  50.             scItem.shopLogo = "商铺图片";// 商铺Logo  
  51.             scItem.shopName = "商铺名称" + i;// 商铺名称  
  52.             scItem.goodsData = new ArrayList<JsGoodsItem>();// 商品数据  
  53.             for (int j = 0; j < i + 1; j++) {  
  54.                 scItem.goodsData.add(new JsGoodsItem("商品id""VIRTUE 摩托电动车双镜片揭面盔全盔半盔冬盔四季安全男女防雾头盔""颜色分类:黑色;尺码:43",  
  55.                         "商品图片"165.00f, 1));  
  56.             }  
  57.             sCartData.add(scItem);  
  58.         }  
  59.   
  60.     }  
  61.   
  62.     @Override  
  63.     public void initListener() {  
  64.         cb_select_all.setOnClickListener(this);// 全选  
  65.         tv_checkout.setOnClickListener(this);// 结算  
  66.   
  67.     }  
  68.   
  69.     @Override  
  70.     public void onClick(View v) {  
  71.         switch (v.getId()) {  
  72.         case R.id.cb_select_all:// 全选  
  73.             boolean flag = cb_select_all.isChecked();  
  74.             for (int i = 0; i < adapter.getSelect().size(); i++) {  
  75.                 adapter.getSelect().set(i, flag);  
  76.                 for (int j = 0; j < adapter.getPAdapter(i).getSelect().size(); j++) {  
  77.                     adapter.getPAdapter(i).getSelect().set(j, flag);  
  78.                 }  
  79.             }  
  80.             updateAmount();  
  81.             adapter.notifyDataSetChanged();  
  82.             break;  
  83.         case R.id.tv_checkout:// 结账  
  84.             if (selGoodsList.size() == 0) {  
  85.                 Toast.makeText(mContext, "请选择要结算的商品!", Toast.LENGTH_SHORT).show();  
  86.             } else {  
  87.                 // 创建订单  
  88.                 JsOrderItem order = new JsOrderItem("10101001""待付款", actualPayment, "订单详情", selGoodsList);  
  89.                 // toOrderMGPage(order);  
  90.                 Toast.makeText(mContext, "前往结算界面", Toast.LENGTH_SHORT).show();  
  91.             }  
  92.   
  93.             break;  
  94.         default:  
  95.             break;  
  96.         }  
  97.     }  
  98.   
  99.     public void checkAll(boolean checked) {  
  100.         cb_select_all.setChecked(checked);  
  101.     }  
  102.   
  103.     public void updateAmount() {  
  104.         actualPayment = 0.0f;// 金额  
  105.         selGoodsList.clear();  
  106.         for (int i = 0; i < sCartData.size(); i++) {  
  107.             // 对于每个商铺  
  108.             List<JsGoodsItem> goodsData = sCartData.get(i).goodsData;// 商品集合  
  109.             for (int j = 0; j < goodsData.size(); j++) {  
  110.                 if (adapter.getPAdapter(i).getSelect().get(j)) {// 第j个商品是否选中  
  111.                     selGoodsList.add(goodsData.get(j));// 添加到已选择集合  
  112.                     // 总价 += 单个商品价格 * 购买数量;  
  113.                     float f = goodsData.get(j).goodsPrice * goodsData.get(j).goodsNum;  
  114.                     actualPayment += f;  
  115.                 }  
  116.             }  
  117.         }  
  118.         tv_total.setText(actualPayment + "");// 更新金额  
  119.         tv_checkout.setText("结算(" + selGoodsList.size() + ")");  
  120.     }  
  121.   
  122. }  

适配器:

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车-商铺-填充器 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class SC_ShopAdapter extends AbsAdapter<JsShoppingCartItem> {  
  8.     private LinkedList<Boolean> selected = new LinkedList<Boolean>();  
  9.     List<SC_GoodsAdapter> pAdapterList = new ArrayList<SC_GoodsAdapter>();  
  10.     ShoppingCartPage sCartPage;  
  11.   
  12.     public SC_ShopAdapter(ShoppingCartPage scPage, List<JsShoppingCartItem> datas) {  
  13.         super(scPage.getActivity(), datas);  
  14.         this.sCartPage = scPage;  
  15.         selected.clear();  
  16.         for (int i = 0; i < mDatas.size(); i++) {  
  17.             selected.add(false);  
  18.             SC_GoodsAdapter pAdapter = new SC_GoodsAdapter(sCartPage, mDatas.get(i).goodsData, this, i);  
  19.             pAdapterList.add(pAdapter);  
  20.         }  
  21.   
  22.     }  
  23.   
  24.     public List<Boolean> getSelect() {  
  25.         return selected;  
  26.     }  
  27.   
  28.     public SC_GoodsAdapter getPAdapter(int position) {  
  29.         return pAdapterList.get(position);  
  30.     }  
  31.   
  32.     public List<SC_GoodsAdapter> getPAdapterList() {  
  33.         return pAdapterList;  
  34.     }  
  35.   
  36.     @Override  
  37.     public View getView(final int position, View convertView, ViewGroup parent) {  
  38.         ViewHolder holder = null;  
  39.         if (convertView == null) {  
  40.             convertView = LayoutInflater.from(mContext).inflate(R.layout.item_cart_goods, parent, false);  
  41.             holder = new ViewHolder();  
  42.             holder.cb_shop_all = (CheckBox) convertView.findViewById(R.id.cb_shop_all);  
  43.             holder.iv_shop_icon = (ImageView) convertView.findViewById(R.id.iv_shop_icon);  
  44.             holder.tv_shop_name = (TextView) convertView.findViewById(R.id.tv_shop_name);  
  45.             holder.lv_goods = (NoScrollListView) convertView.findViewById(R.id.lv_goods);  
  46.             convertView.setTag(holder);  
  47.         } else {  
  48.             holder = (ViewHolder) convertView.getTag();  
  49.         }  
  50.   
  51.         final JsShoppingCartItem item = (JsShoppingCartItem) getItem(position);  
  52.   
  53.         holder.iv_shop_icon.setImageResource(R.drawable.shangpu);// 商铺  
  54.         holder.tv_shop_name.setText(item.shopName);// 名称  
  55.         holder.lv_goods.setAdapter(pAdapterList.get(position));// 填充商品  
  56.         holder.cb_shop_all.setChecked(selected.get(position));// 是否全选  
  57.         holder.cb_shop_all.setOnClickListener(new OnClickListener() {  
  58.             @Override  
  59.             public void onClick(View v) {  
  60.                 selected.set(position, !selected.get(position));// 选中取反  
  61.                 // 更新孩子  
  62.                 SC_GoodsAdapter goodsAdp = pAdapterList.get(position);// 商品适配器  
  63.                 for (int i = 0; i < goodsAdp.getSelect().size(); i++) {  
  64.                     // 设置每一个孩子 跟 父亲相同  
  65.                     goodsAdp.getSelect().set(i, selected.get(position));  
  66.                 }  
  67.                 // 更新 购物车 全选按钮  
  68.                 if (selected.contains(false)) {  
  69.                     sCartPage.checkAll(false);  
  70.                 } else {  
  71.                     sCartPage.checkAll(true);  
  72.                 }  
  73.                 sCartPage.updateAmount();  
  74.                 notifyDataSetChanged();  
  75.             }  
  76.         });  
  77.   
  78.         return convertView;  
  79.     }  
  80.   
  81.     /** 
  82.      * 创建一个本,减少findViewById的次数 
  83.      */  
  84.     private class ViewHolder {  
  85.         CheckBox cb_shop_all;// 全选  
  86.         ImageView iv_shop_icon;// 商铺图  
  87.         TextView tv_shop_name;// 商铺名  
  88.         NoScrollListView lv_goods;// 商品列表  
  89.   
  90.     }  
  91. }  

商品适配器

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车-商品-填充器 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class SC_GoodsAdapter extends AbsAdapter<JsGoodsItem> {  
  8.     private List<Boolean> goodsSelList = new ArrayList<Boolean>();// 商品选择集合  
  9.     private int storePosition;// 商铺索引  
  10.     SC_ShopAdapter adapter;  
  11.     ShoppingCartPage sCartPage;  
  12.   
  13.     public SC_GoodsAdapter(ShoppingCartPage scPage, List<JsGoodsItem> datas, SC_ShopAdapter adapter, int storePosition) {  
  14.         super(scPage.getActivity(), datas);  
  15.   
  16.         this.sCartPage = scPage;  
  17.         this.adapter = adapter;  
  18.         this.storePosition = storePosition;  
  19.   
  20.         for (int j = 0; j < mDatas.size(); j++) {  
  21.             goodsSelList.add(false);  
  22.         }  
  23.   
  24.     }  
  25.   
  26.     public List<Boolean> getSelect() {  
  27.         return goodsSelList;  
  28.     }  
  29.   
  30.     @Override  
  31.     public View getView(final int position, View convertView, ViewGroup parent) {  
  32.         ViewHolder holder = null;  
  33.         if (convertView == null) {  
  34.             convertView = LayoutInflater.from(mContext).inflate(R.layout.item_order_goods2, parent, false);  
  35.             holder = new ViewHolder();  
  36.             holder.cb_select = (CheckBox) convertView.findViewById(R.id.cb_select);  
  37.             holder.tv_comment = (ImageView) convertView.findViewById(R.id.tv_comment);  
  38.             holder.tv_goods_name = (TextView) convertView.findViewById(R.id.tv_goods_name);  
  39.             holder.tv_goods_des = (TextView) convertView.findViewById(R.id.tv_goods_des);  
  40.             holder.tv_goods_price = (TextView) convertView.findViewById(R.id.tv_goods_price);  
  41.             holder.eas_num = (EditAddSubView) convertView.findViewById(R.id.eas_num);  
  42.             convertView.setTag(holder);  
  43.         } else {  
  44.             holder = (ViewHolder) convertView.getTag();  
  45.         }  
  46.   
  47.         final JsGoodsItem item = (JsGoodsItem) getItem(position);  
  48.   
  49.         holder.tv_comment.setImageResource(R.drawable.shangpin);// 商品图  
  50.         holder.tv_goods_name.setText(item.goodsName);// 名称  
  51.         holder.tv_goods_des.setText(item.goodsDes);// 详细  
  52.         holder.tv_goods_price.setText("¥" + item.goodsPrice);// 价格  
  53.   
  54.         holder.eas_num.setNumScope(110);// 设置数值范围  
  55.         holder.eas_num.setNum(item.goodsNum);// 数量  
  56.         holder.eas_num.setOnNumChangeListener(new INumChangeListener() {  
  57.             @Override  
  58.             public void onNumChange(View view, int num) {  
  59.                 item.goodsNum = num;  
  60.                 sCartPage.updateAmount();// 更新金额  
  61.             }  
  62.         });  
  63.   
  64.         holder.cb_select.setChecked(goodsSelList.get(position));// 是否选择  
  65.         holder.cb_select.setOnClickListener(new OnClickListener() {  
  66.             @Override  
  67.             public void onClick(View v) {  
  68.                 goodsSelList.set(position, !goodsSelList.get(position));  
  69.                 // 更新商品对应商铺对应的全选按钮  
  70.                 if (goodsSelList.contains(false)) {  
  71.                     adapter.getSelect().set(storePosition, false);  
  72.                 } else {  
  73.                     adapter.getSelect().set(storePosition, true);  
  74.                 }  
  75.                 // 更新购物车,全选按钮  
  76.                 if (adapter.getSelect().contains(false)) {  
  77.                     sCartPage.checkAll(false);  
  78.                 } else {  
  79.                     sCartPage.checkAll(true);  
  80.                 }  
  81.                 sCartPage.updateAmount();// 更新金额  
  82.                 adapter.notifyDataSetChanged();  
  83.             }  
  84.         });  
  85.   
  86.         return convertView;  
  87.     }  
  88.   
  89.     /** 
  90.      * 创建一个本,减少findViewById的次数 
  91.      */  
  92.     private class ViewHolder {  
  93.         CheckBox cb_select;// 选择  
  94.         ImageView tv_comment;// 商品图  
  95.         TextView tv_goods_name;// 商品名  
  96.         TextView tv_goods_des;// 商品详情  
  97.         TextView tv_goods_price;// 商品价格  
  98.         EditAddSubView eas_num;// 商品数量  
  99.     }  
  100. }  

先看效果:

 





主界面:

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车界面 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class ShoppingCartPage extends BaseFragment implements OnClickListener {  
  8.     @ViewInject(R.id.lv_shopping_cart)  
  9.     private ListView lv_shopping_cart;// 购物车  
  10.     // 底部条  
  11.     @ViewInject(R.id.cb_select_all)  
  12.     private CheckBox cb_select_all;// 全选  
  13.     @ViewInject(R.id.tv_total)  
  14.     private TextView tv_total;// 总计  
  15.     @ViewInject(R.id.tv_checkout)  
  16.     private TextView tv_checkout;// 结账  
  17.   
  18.     public static final String FRAGMENT_NAME = "购物车";  
  19.     private SC_ShopAdapter adapter;  
  20.     private List<JsShoppingCartItem> sCartData;  
  21.   
  22.     private List<JsGoodsItem> selGoodsList = new ArrayList<JsGoodsItem>();// 已经选择的商品集合  
  23.     private float actualPayment;// 实际付款  
  24.   
  25.     @Override  
  26.     public View initView(LayoutInflater inflater) {  
  27.         view = inflater.inflate(R.layout.fragment_shopping_cart, null);  
  28.         ViewUtils.inject(this, view);  
  29.         return view;  
  30.     }  
  31.   
  32.     @Override  
  33.     public void initData(Bundle savedInstanceState) {  
  34.         MainActivity orderMange = (MainActivity) getActivity();  
  35.         orderMange.tv_title.setText(FRAGMENT_NAME);  
  36.         getSCData();  
  37.   
  38.         adapter = new SC_ShopAdapter(this, sCartData);  
  39.         lv_shopping_cart.setAdapter(adapter);  
  40.         Util.setListViewHeight(lv_shopping_cart);  
  41.   
  42.     }  
  43.   
  44.     private void getSCData() {  
  45.         sCartData = new ArrayList<JsShoppingCartItem>();  
  46.   
  47.         for (int i = 0; i < 5; i++) {  
  48.             JsShoppingCartItem scItem = new JsShoppingCartItem();  
  49.             scItem.id = "id";  
  50.             scItem.shopLogo = "商铺图片";// 商铺Logo  
  51.             scItem.shopName = "商铺名称" + i;// 商铺名称  
  52.             scItem.goodsData = new ArrayList<JsGoodsItem>();// 商品数据  
  53.             for (int j = 0; j < i + 1; j++) {  
  54.                 scItem.goodsData.add(new JsGoodsItem("商品id""VIRTUE 摩托电动车双镜片揭面盔全盔半盔冬盔四季安全男女防雾头盔""颜色分类:黑色;尺码:43",  
  55.                         "商品图片"165.00f, 1));  
  56.             }  
  57.             sCartData.add(scItem);  
  58.         }  
  59.   
  60.     }  
  61.   
  62.     @Override  
  63.     public void initListener() {  
  64.         cb_select_all.setOnClickListener(this);// 全选  
  65.         tv_checkout.setOnClickListener(this);// 结算  
  66.   
  67.     }  
  68.   
  69.     @Override  
  70.     public void onClick(View v) {  
  71.         switch (v.getId()) {  
  72.         case R.id.cb_select_all:// 全选  
  73.             boolean flag = cb_select_all.isChecked();  
  74.             for (int i = 0; i < adapter.getSelect().size(); i++) {  
  75.                 adapter.getSelect().set(i, flag);  
  76.                 for (int j = 0; j < adapter.getPAdapter(i).getSelect().size(); j++) {  
  77.                     adapter.getPAdapter(i).getSelect().set(j, flag);  
  78.                 }  
  79.             }  
  80.             updateAmount();  
  81.             adapter.notifyDataSetChanged();  
  82.             break;  
  83.         case R.id.tv_checkout:// 结账  
  84.             if (selGoodsList.size() == 0) {  
  85.                 Toast.makeText(mContext, "请选择要结算的商品!", Toast.LENGTH_SHORT).show();  
  86.             } else {  
  87.                 // 创建订单  
  88.                 JsOrderItem order = new JsOrderItem("10101001""待付款", actualPayment, "订单详情", selGoodsList);  
  89.                 // toOrderMGPage(order);  
  90.                 Toast.makeText(mContext, "前往结算界面", Toast.LENGTH_SHORT).show();  
  91.             }  
  92.   
  93.             break;  
  94.         default:  
  95.             break;  
  96.         }  
  97.     }  
  98.   
  99.     public void checkAll(boolean checked) {  
  100.         cb_select_all.setChecked(checked);  
  101.     }  
  102.   
  103.     public void updateAmount() {  
  104.         actualPayment = 0.0f;// 金额  
  105.         selGoodsList.clear();  
  106.         for (int i = 0; i < sCartData.size(); i++) {  
  107.             // 对于每个商铺  
  108.             List<JsGoodsItem> goodsData = sCartData.get(i).goodsData;// 商品集合  
  109.             for (int j = 0; j < goodsData.size(); j++) {  
  110.                 if (adapter.getPAdapter(i).getSelect().get(j)) {// 第j个商品是否选中  
  111.                     selGoodsList.add(goodsData.get(j));// 添加到已选择集合  
  112.                     // 总价 += 单个商品价格 * 购买数量;  
  113.                     float f = goodsData.get(j).goodsPrice * goodsData.get(j).goodsNum;  
  114.                     actualPayment += f;  
  115.                 }  
  116.             }  
  117.         }  
  118.         tv_total.setText(actualPayment + "");// 更新金额  
  119.         tv_checkout.setText("结算(" + selGoodsList.size() + ")");  
  120.     }  
  121.   
  122. }  

适配器:

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车-商铺-填充器 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class SC_ShopAdapter extends AbsAdapter<JsShoppingCartItem> {  
  8.     private LinkedList<Boolean> selected = new LinkedList<Boolean>();  
  9.     List<SC_GoodsAdapter> pAdapterList = new ArrayList<SC_GoodsAdapter>();  
  10.     ShoppingCartPage sCartPage;  
  11.   
  12.     public SC_ShopAdapter(ShoppingCartPage scPage, List<JsShoppingCartItem> datas) {  
  13.         super(scPage.getActivity(), datas);  
  14.         this.sCartPage = scPage;  
  15.         selected.clear();  
  16.         for (int i = 0; i < mDatas.size(); i++) {  
  17.             selected.add(false);  
  18.             SC_GoodsAdapter pAdapter = new SC_GoodsAdapter(sCartPage, mDatas.get(i).goodsData, this, i);  
  19.             pAdapterList.add(pAdapter);  
  20.         }  
  21.   
  22.     }  
  23.   
  24.     public List<Boolean> getSelect() {  
  25.         return selected;  
  26.     }  
  27.   
  28.     public SC_GoodsAdapter getPAdapter(int position) {  
  29.         return pAdapterList.get(position);  
  30.     }  
  31.   
  32.     public List<SC_GoodsAdapter> getPAdapterList() {  
  33.         return pAdapterList;  
  34.     }  
  35.   
  36.     @Override  
  37.     public View getView(final int position, View convertView, ViewGroup parent) {  
  38.         ViewHolder holder = null;  
  39.         if (convertView == null) {  
  40.             convertView = LayoutInflater.from(mContext).inflate(R.layout.item_cart_goods, parent, false);  
  41.             holder = new ViewHolder();  
  42.             holder.cb_shop_all = (CheckBox) convertView.findViewById(R.id.cb_shop_all);  
  43.             holder.iv_shop_icon = (ImageView) convertView.findViewById(R.id.iv_shop_icon);  
  44.             holder.tv_shop_name = (TextView) convertView.findViewById(R.id.tv_shop_name);  
  45.             holder.lv_goods = (NoScrollListView) convertView.findViewById(R.id.lv_goods);  
  46.             convertView.setTag(holder);  
  47.         } else {  
  48.             holder = (ViewHolder) convertView.getTag();  
  49.         }  
  50.   
  51.         final JsShoppingCartItem item = (JsShoppingCartItem) getItem(position);  
  52.   
  53.         holder.iv_shop_icon.setImageResource(R.drawable.shangpu);// 商铺  
  54.         holder.tv_shop_name.setText(item.shopName);// 名称  
  55.         holder.lv_goods.setAdapter(pAdapterList.get(position));// 填充商品  
  56.         holder.cb_shop_all.setChecked(selected.get(position));// 是否全选  
  57.         holder.cb_shop_all.setOnClickListener(new OnClickListener() {  
  58.             @Override  
  59.             public void onClick(View v) {  
  60.                 selected.set(position, !selected.get(position));// 选中取反  
  61.                 // 更新孩子  
  62.                 SC_GoodsAdapter goodsAdp = pAdapterList.get(position);// 商品适配器  
  63.                 for (int i = 0; i < goodsAdp.getSelect().size(); i++) {  
  64.                     // 设置每一个孩子 跟 父亲相同  
  65.                     goodsAdp.getSelect().set(i, selected.get(position));  
  66.                 }  
  67.                 // 更新 购物车 全选按钮  
  68.                 if (selected.contains(false)) {  
  69.                     sCartPage.checkAll(false);  
  70.                 } else {  
  71.                     sCartPage.checkAll(true);  
  72.                 }  
  73.                 sCartPage.updateAmount();  
  74.                 notifyDataSetChanged();  
  75.             }  
  76.         });  
  77.   
  78.         return convertView;  
  79.     }  
  80.   
  81.     /** 
  82.      * 创建一个本,减少findViewById的次数 
  83.      */  
  84.     private class ViewHolder {  
  85.         CheckBox cb_shop_all;// 全选  
  86.         ImageView iv_shop_icon;// 商铺图  
  87.         TextView tv_shop_name;// 商铺名  
  88.         NoScrollListView lv_goods;// 商品列表  
  89.   
  90.     }  
  91. }  

商品适配器

[java] view plain copy
 print?
  1. /** 
  2.  * 购物车-商品-填充器 
  3.  *  
  4.  * @author shaoshuai 
  5.  *  
  6.  */  
  7. public class SC_GoodsAdapter extends AbsAdapter<JsGoodsItem> {  
  8.     private List<Boolean> goodsSelList = new ArrayList<Boolean>();// 商品选择集合  
  9.     private int storePosition;// 商铺索引  
  10.     SC_ShopAdapter adapter;  
  11.     ShoppingCartPage sCartPage;  
  12.   
  13.     public SC_GoodsAdapter(ShoppingCartPage scPage, List<JsGoodsItem> datas, SC_ShopAdapter adapter, int storePosition) {  
  14.         super(scPage.getActivity(), datas);  
  15.   
  16.         this.sCartPage = scPage;  
  17.         this.adapter = adapter;  
  18.         this.storePosition = storePosition;  
  19.   
  20.         for (int j = 0; j < mDatas.size(); j++) {  
  21.             goodsSelList.add(false);  
  22.         }  
  23.   
  24.     }  
  25.   
  26.     public List<Boolean> getSelect() {  
  27.         return goodsSelList;  
  28.     }  
  29.   
  30.     @Override  
  31.     public View getView(final int position, View convertView, ViewGroup parent) {  
  32.         ViewHolder holder = null;  
  33.         if (convertView == null) {  
  34.             convertView = LayoutInflater.from(mContext).inflate(R.layout.item_order_goods2, parent, false);  
  35.             holder = new ViewHolder();  
  36.             holder.cb_select = (CheckBox) convertView.findViewById(R.id.cb_select);  
  37.             holder.tv_comment = (ImageView) convertView.findViewById(R.id.tv_comment);  
  38.             holder.tv_goods_name = (TextView) convertView.findViewById(R.id.tv_goods_name);  
  39.             holder.tv_goods_des = (TextView) convertView.findViewById(R.id.tv_goods_des);  
  40.             holder.tv_goods_price = (TextView) convertView.findViewById(R.id.tv_goods_price);  
  41.             holder.eas_num = (EditAddSubView) convertView.findViewById(R.id.eas_num);  
  42.             convertView.setTag(holder);  
  43.         } else {  
  44.             holder = (ViewHolder) convertView.getTag();  
  45.         }  
  46.   
  47.         final JsGoodsItem item = (JsGoodsItem) getItem(position);  
  48.   
  49.         holder.tv_comment.setImageResource(R.drawable.shangpin);// 商品图  
  50.         holder.tv_goods_name.setText(item.goodsName);// 名称  
  51.         holder.tv_goods_des.setText(item.goodsDes);// 详细  
  52.         holder.tv_goods_price.setText("¥" + item.goodsPrice);// 价格  
  53.   
  54.         holder.eas_num.setNumScope(110);// 设置数值范围  
  55.         holder.eas_num.setNum(item.goodsNum);// 数量  
  56.         holder.eas_num.setOnNumChangeListener(new INumChangeListener() {  
  57.             @Override  
  58.             public void onNumChange(View view, int num) {  
  59.                 item.goodsNum = num;  
  60.                 sCartPage.updateAmount();// 更新金额  
  61.             }  
  62.         });  
  63.   
  64.         holder.cb_select.setChecked(goodsSelList.get(position));// 是否选择  
  65.         holder.cb_select.setOnClickListener(new OnClickListener() {  
  66.             @Override  
  67.             public void onClick(View v) {  
  68.                 goodsSelList.set(position, !goodsSelList.get(position));  
  69.                 // 更新商品对应商铺对应的全选按钮  
  70.                 if (goodsSelList.contains(false)) {  
  71.                     adapter.getSelect().set(storePosition, false);  
  72.                 } else {  
  73.                     adapter.getSelect().set(storePosition, true);  
  74.                 }  
  75.                 // 更新购物车,全选按钮  
  76.                 if (adapter.getSelect().contains(false)) {  
  77.                     sCartPage.checkAll(false);  
  78.                 } else {  
  79.                     sCartPage.checkAll(true);  
  80.                 }  
  81.                 sCartPage.updateAmount();// 更新金额  
  82.                 adapter.notifyDataSetChanged();  
  83.             }  
  84.         });  
  85.   
  86.         return convertView;  
  87.     }  
  88.   
  89.     /** 
  90.      * 创建一个本,减少findViewById的次数 
  91.      */  
  92.     private class ViewHolder {  
  93.         CheckBox cb_select;// 选择  
  94.         ImageView tv_comment;// 商品图  
  95.         TextView tv_goods_name;// 商品名  
  96.         TextView tv_goods_des;// 商品详情  
  97.         TextView tv_goods_price;// 商品价格  
  98.         EditAddSubView eas_num;// 商品数量  
  99.     }  
  100. }  

0 0