分析:
1、网络购物车是一个虚拟的购物车,但是要实现像真实购物一样的大概流程,
添加商品,丢掉商品,结算价钱等等
1、 因为只有用户确定购买的商品才是有效的,并且选择不同的商品要浏览不同的页面,所以需要长久保存数据,但是还不能把所有的选过的商品都添加到数据库中,这样如果客户不要该商品时还需要在数据库中删除增加了服务器的压力,所以要筛选到只有客户最终确定的商品才添加到数据库进行保存,这时就需要一个临时的全局变量来保存数据,cookie 或者是 session 他们的优缺点以下介绍:
2、
3、 功能:
a) 商品展示,相关资料(基本描述,价格,名称,供应商情况,图片等)
b) 购物车功能
i. 用户可以再购物王章不同页面之间任意跳转,选购自己喜欢的商品---点击购买----订单信息----统一到付账台结账
功能包括:
1) 添加商品—-订购
2) 删除商品
3) 修改商品的购买数量(小计,总价)
4) 清空购物车
ii:订单
详细信息表单
支付方式----支付宝接口
购物流程:商品浏览—-加入购物车—–购物结算——生成订单——提交订单
代码块
main主页
public class ShoppingCar extends Fragment implements IGwCheView, View.OnClickListener {
private List<GoodsBean.DataBean> list;
private MyAdapter_car adapter;
private View view;
private ExpandableListView mMyexpandle;
/**
* 全选/反选
*/
private CheckBox mCbQxMain;
/**
* 合计:0
*/
private TextView mTvSum;
/**
* 去结算(0)
*/
private Button mJisuan;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.shoppcar, container, false);
initView(view);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int uid = 12007;
PresenterImp presenterImp = new PresenterImp();
presenterImp.showShoppingCarToView(new ModleImp(), getActivity(), this,uid);
}
@Override
public void onResume() {
super.onResume();
int uid = 12007;
PresenterImp presenterImp = new PresenterImp();
presenterImp.showShoppingCarToView(new ModleImp(), getActivity(), this,uid);
}
@Override
public void showGowWuList(List<GoodsBean.DataBean> data) {
Log.d("GwCheFragment----------", "data:" + data);
list = data;
adapter = new MyAdapter_car(data, getActivity(), this);
mMyexpandle.setAdapter(adapter);
// 打开二级列表
int count = mMyexpandle.getCount();
for (int i = 0; i < count; i++) {
mMyexpandle.expandGroup(i);
}
// 分割线
mMyexpandle.setDivider(getResources().getDrawable(R.drawable.shap_param));
mMyexpandle.setChildDivider(getResources().getDrawable(R.drawable.shap_child));
}
// 显示总价
@Override
public void showCount(String count) {
mTvSum.setText("总价:"+count);
}
private void initView(View view) {
mMyexpandle = (ExpandableListView) view.findViewById(R.id.myexpandle);
mCbQxMain = (CheckBox) view.findViewById(R.id.cb_qx_main);
mTvSum = (TextView) view.findViewById(R.id.tv_sum);
mJisuan = (Button) view.findViewById(R.id.jisuan);
mJisuan.setOnClickListener(this);
mCbQxMain.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
default:
break;
// 全选 获取bean中的多选框状态值,赋予状态
case R.id.cb_qx_main:
boolean checked = mCbQxMain.isChecked();
//只需要改变集合里面的数据,就可以了,然后刷新
for (int i = 0; i < list.size(); i++) {
GoodsBean.DataBean dataBean = list.get(i);
dataBean.setParentIsSelected(checked);
//获得子集合,遍历
List<GoodsBean.ChildBean> list1 = dataBean.getList();
for (int j = 0; j < list1.size(); j++) {
list1.get(j).setChildIsSelect(checked);
}
}
//刷新即可
adapter.notifyDataSetChanged();
break;
case R.id.jisuan:
Toast.makeText(getActivity(), "去结算------", Toast.LENGTH_SHORT).show();
break;
}
}
}
布局界面-----------------------------------------
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ExpandableListView
android:id="@+id/myexpandle"
android:layout_width="match_parent"
android:layout_height="0dp"
android:groupIndicator="@null"
android:layout_weight="1">
</ExpandableListView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"