電商項目中常常有購物車這個功能,做個很多項目了,都有不同的界面,選了一個來講一下。
主要包含了 店鋪分類,側滑刪除,商品篩選,增加和減少,價格計算等功能。
看看效果圖:
重要代碼:
private void showExpandData(){ cartExpandAdapter=new CartExpandAdapter(this,cartExpandablelistview,cartInfo.getData()); cartExpandablelistview.setAdapter(cartExpandAdapter); int intgroupCount = cartExpandablelistview.getCount(); for (int i=0; i<intgroupCount; i++) { cartExpandablelistview.expandGroup(i); } /** * 全選 */ cartExpandAdapter.setOnItemClickListener(new OnViewItemClickListener() { @Override public void onItemClick(boolean isFlang, View view, int position) { cartInfo.getData().get(position).setIscheck(isFlang); int length=cartInfo.getData().get(position).getItems().size(); for (int i = 0; i < length; i++) { cartInfo.getData().get(position).getItems().get(i).setIscheck(isFlang); } cartExpandAdapter.notifyDataSetChanged(); showCommodityCalculation(); } }); /** * 單選 */ cartExpandAdapter.setOnClickListenterModel(new OnClickListenterModel() { @Override public void onItemClick(boolean isFlang, View view,int onePosition, int position) { cartInfo.getData().get(onePosition).getItems().get(position).setIscheck(isFlang); int length=cartInfo.getData().get(onePosition).getItems().size(); for (int i = 0; i < length ; i++) { if (! cartInfo.getData().get(onePosition).getItems().get(i).ischeck()){ if (!isFlang){ cartInfo.getData().get(onePosition).setIscheck(isFlang); } cartExpandAdapter.notifyDataSetChanged(); showCommodityCalculation(); return; }else { if (i== ( length-1)){ cartInfo.getData().get(onePosition).setIscheck(isFlang); cartExpandAdapter.notifyDataSetChanged(); } } } showCommodityCalculation(); } }); cartExpandAdapter.setOnClickDeleteListenter(new OnClickDeleteListenter() { @Override public void onItemClick(View view, int onePosition, int position) { Toast.makeText(MainActivity.this,"刪除操作",Toast.LENGTH_LONG).show(); } }); /*** * 數量增加和減少 */ cartExpandAdapter.setOnClickAddCloseListenter(new OnClickAddCloseListenter() { @Override public void onItemClick(View view, int index, int onePosition, int position,int num) { if (index==1){ if (num>1) { cartInfo.getData().get(onePosition).getItems().get(position).setNum((num - 1)); cartExpandAdapter.notifyDataSetChanged(); } }else { cartInfo.getData().get(onePosition).getItems().get(position).setNum((num + 1)); cartExpandAdapter.notifyDataSetChanged(); } showCommodityCalculation(); } }); }
這是我項目中用到的購物車,基本的功能都有了的。
有需要的小伙們,可以參考一下。
代碼下載Github:https://github.com/DickyQie/android-shoppingcart