购物车切换练习


//MainActivity类

public class MainActivity extends AppCompatActivity implements Iview,View.OnClickListener{

    private XRecyclerView xrc;
    private Myadapter myadapter;
    private Presenter presenter;
    private ImageView iv;
    private PopupWindow popupWindow;
    String[] arr={"待支付","已支付","已取消"};
    List<Goodbean.DataBean> list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化id
        innitid();
        presenter = new Presenter();
        presenter.getmv(this,this,new Mymode());

        //上啦加载下拉刷新的方法
        shuaxinjiazai();

        //设置图片的点击事件
        iv.setOnClickListener(this);

    }

    private void shuaxinjiazai() {
       xrc.setLoadingListener(new XRecyclerView.LoadingListener() {
           //刷新的方法
           @Override
           public void onRefresh() {
              //刷新时从新调用下适配器
               Presenter presenter=new Presenter();
               presenter.getmv(MainActivity.this,MainActivity.this,new Mymode());
               //关闭刷新
               xrc.refreshComplete();
           }

           //下拉加载的方法
           @Override
           public void onLoadMore() {
               Toast.makeText(MainActivity.this,"加载更多",Toast.LENGTH_SHORT).show();
               //调用p层加载更多的方法
               presenter.pjiazaigengduo(MainActivity.this,MainActivity.this,new Mymode());
               xrc.refreshComplete();
           }
       });
    }

    private void innitid() {
        xrc = findViewById(R.id.xrc);
        iv = findViewById(R.id.iv);
    }

    //默认设置适配器的方法
    @Override
    public void setmyadapter(Context context, List<Goodbean.DataBean> list) {
        //给全局变量赋值
      this.list=list;
        myadapter = new Myadapter(context,list,this);
        xrc.setAdapter(myadapter);
        xrc.setLayoutManager(new LinearLayoutManager(this));
    }

    //上啦加载更多的方法
    @Override
    public void vjiazaigengduo(Context context,List<Goodbean.DataBean> list) {
        //adapter适配器里面必须有set   get方法
        List<Goodbean.DataBean> data = myadapter.getList();
        data.addAll(list);
        myadapter.notifyDataSetChanged();

    }

    //d点击图片时 设置适配器的方法
    @Override
    public void settuadapter(Context context, List<Goodbean.DataBean> list) {
        myadapter = new Myadapter(context,list,this);
        xrc.setAdapter(myadapter);
    }

    //图片的点击事件
    @Override
    public void onClick(View v) {
        //pop_item  布局为listview
        View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.pop_item,null);
        ListView listview = view.findViewById(R.id.listview);
        //为listview设置适配器
        listview.setAdapter(new BaseAdapter() {

            private TextView textView;

            @Override
            public int getCount() {
                return arr.length;
            }

            @Override
            public Object getItem(int position) {
                return null;
            }

            @Override
            public long getItemId(int position) {
                return 0;
            }

            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                if (convertView==null){
                    textView = new TextView(MainActivity.this);
                }
                textView.setText(arr[position]);
                textView.setTextSize(30);
                return textView;
            }
        });

        //  popupWindow显示在底部
        popupWindow = new PopupWindow(view, 140, ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setBackgroundDrawable(new ColorDrawable(getResources().getColor(android.R.color.transparent)));
        popupWindow.setOutsideTouchable(true);
        popupWindow.showAsDropDown(iv,0,10);

        //设置listview的点击事件
        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            List<Goodbean.DataBean> list1=new ArrayList<Goodbean.DataBean>();
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (arr[position].equals("待支付")){
                    //遍历集合的数据
                    for (int j = 0;j<list.size(); j++) {

                        //判断数据的值  ==0  取出来放到新的集合  用新的集合重新设置适配器
                        if (list.get(j).getStatus()==0.0){

                            Goodbean.DataBean dataBean = list.get(j);
                            list1.add(dataBean);

                           //从新设置适配器
                            presenter.diantu(MainActivity.this, MainActivity.this, new Mymode(), list1);


                        }
                    }
                    popupWindow.dismiss();
                }


                if (arr[position].equals("已支付")){
                    //遍历集合的数据
                    for (int j = 0;j<list.size(); j++) {
            //判断数据的值  ==1.0  取出来放到新的集合  用新的集合重新设置适配器
                        if (list.get(j).getStatus()==1.0){
                            Goodbean.DataBean dataBean = list.get(j);
                            list1.add(dataBean);
                            //从新设置适配器
                            presenter.diantu(MainActivity.this,MainActivity.this,new Mymode(),list1);


                        }
                    }


                    popupWindow.dismiss();
                }

                if (arr[position].equals("已取消")){
                    //遍历集合的数据
                    for (int j = 0;j<list.size(); j++) {
                        //判断数据的值  ==2.0  取出来放到新的集合  用新的集合重新设置适配器
                        if (list.get(j).getStatus()==2.0){
                            Goodbean.DataBean dataBean = list.get(j);
                            list1.add(dataBean);
                            //从新设置适配器
                            presenter.diantu(MainActivity.this,MainActivity.this,new Mymode(),list1);


                        }
                    }


                    popupWindow.dismiss();
                }
            }
        });

    }
}
 
V层的接口
public interface Iview {
    //设置适配器的方法
   void  setmyadapter(Context context,List<Goodbean.DataBean> list);
   //上拉加载更多的方法
    void vjiazaigengduo(Context context,List<Goodbean.DataBean> list);

    //点击图片设置适配器的方法
    void  settuadapter(Context context,List<Goodbean.DataBean> list);

}
 
 
//p层的接口
 
public interface Ipresenter {

    void getmv(Context context, Iview iview, Imode imode);

    //上啦加载更多的方法
    void pjiazaigengduo(Context context, Iview iview, Imode imode);

    //修改的方法
    void upgood(Context context, Iview iview, Imode imode,int id);

    //点击图片时的适配器
    void diantu(Context context, Iview iview, Imode imode,List<Goodbean.DataBean> list1);

}

//p层的代码
public class Presenter implements Ipresenter {
    @Override
    public void getmv(final Context context, final Iview iview, Imode imode) {
        Map<String,String> map=new HashMap<>();
        map.put("uid","71");
        map.put("page","1");
       imode.getnetjsonbean(JIekou.net, map, new Gouwuchelisteneter() {
           @Override
           public void gouwucheListeneter(List<Goodbean.DataBean> data) {
               //调用v层设置适配器的代码
               iview.setmyadapter(context,data);

           }
       });

    }

    //上啦加载更多的方法
    @Override
    public void pjiazaigengduo(final Context context, final Iview iview, Imode imode) {
        int i=1;
        i++;
        Map<String,String> map=new HashMap<>();
        map.put("uid","71");
        map.put("page",""+i);
        imode.getnetjsonbean(JIekou.net, map, new Gouwuchelisteneter() {
            @Override
            public void gouwucheListeneter(List<Goodbean.DataBean> data) {
                iview.vjiazaigengduo(context,data);
            }
        });

    }

    @Override
    public void upgood(final Context context, final Iview iview, final Imode imode, int id) {
        Map<String,String> map=new HashMap<>();
        map.put("uid","71");
        map.put("orderId",id+"");
        map.put("status","2");

        imode.xiugai(JIekou.update, map, new Xiugailisteneter() {
            @Override
            public void xiugaiListeneter(UpGoodbean upGoodbean) {
                //如果成功从新设置适配器
                if (upGoodbean.getCode().equals("0")){
                    Map<String,String> map=new HashMap<>();
                    map.put("uid","71");
                    map.put("page","1");
                    imode.getnetjsonbean(JIekou.net, map, new Gouwuchelisteneter() {
                        @Override
                        public void gouwucheListeneter(List<Goodbean.DataBean> data) {
                            //调用v层设置适配器的代码
                            iview.setmyadapter(context,data);

                        }
                    });
                    Log.d("成功", "xiugaiListeneter: 开心");
                }else {
                    Log.d("失败", "xiugaiListeneter: 大哭");
                }

            }
        });


    }
     //点击图片时  从新设置适配器
    @Override
    public void diantu(Context context, Iview iview, Imode imode,List<Goodbean.DataBean> list1) {
        //调用v层设置适配器的方法   新的适配器的方法
        iview.settuadapter(context,list1);

    }
}

//适配器的代码

public class Myadapter extends RecyclerView.Adapter <Myadapter.Myhodler>{
    private Context context;
    private List<Goodbean.DataBean> list;
    private Iview iview;

    public Myadapter(Context context, List<Goodbean.DataBean> list,Iview iview) {
        this.context = context;
        this.list = list;
        this.iview=iview;

    }

    public Context getContext() {
        return context;
    }

    public void setContext(Context context) {
        this.context = context;
    }

    public List<Goodbean.DataBean> getList() {
        return list;
    }

    public void setList(List<Goodbean.DataBean> list) {
        this.list = list;
    }

    @Override
    public Myhodler onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.xrc, null);
        Myhodler myhodler=new Myhodler(view);
        return myhodler;
    }

    @Override
    public void onBindViewHolder(Myhodler holder, final int position) {
        holder.title.setText(list.get(position).getTitle());
        holder.prive.setText("价格"+list.get(position).getPrice()+"");
        holder.time.setText("创建时间:"+list.get(position).getCreatetime()+"");

        if (list.get(position).getStatus()==0.0){
            holder.zhi.setTextColor(Color.RED);
            holder.zhi.setText("待支付");
            holder.dan.setText("取消订单");
        }
        if (list.get(position).getStatus()==1.0){
            holder.zhi.setText("已支付");
            holder.dan.setText("查看订单");
        }
        if (list.get(position).getStatus()==2.0){
            holder.zhi.setTextColor(Color.YELLOW);
            holder.zhi.setText("已取消");
            holder.dan.setText("删除订单");
        }
        //如果是待支付的话点击改变取消订单
        if (holder.zhi.getText().toString().equals("待支付")) {
            holder.dan.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //弹出框
                    AlertDialog.Builder builder = new AlertDialog.Builder(context);
                    builder.setTitle("提示");
                    builder.setMessage("是否取消?");
                    AlertDialog alertDialog = builder.create();
                    builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //获取点击时 订单的id
                            double orderid = list.get(position).getOrderid();
                            Presenter presenter=new Presenter();
                            presenter.upgood(context,iview,new Mymode(),(int)orderid);
                        }
                    });

                    builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                        }
                    });
                    builder.show();

                }
            });

        }

    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    class Myhodler extends RecyclerView.ViewHolder{
        private TextView title;
        private TextView prive;
        private TextView time;
        private TextView zhi;
        private Button dan;
        public Myhodler(View itemView) {
            super(itemView);
            this.title=itemView.findViewById(R.id.title);
            this.prive=itemView.findViewById(R.id.prive);
            this.time=itemView.findViewById(R.id.time);
            this.zhi=itemView.findViewById(R.id.zhi);
            this.dan=itemView.findViewById(R.id.dan);
        }
    }
}


//m层的方法

public class Mymode implements Imode {

    //获取购物车数据的方法
    Okhttp okhttp=new Okhttp();
    @Override
    public void getnetjsonbean(String uri, Map<String, String> map, final Gouwuchelisteneter gouwuchelisteneter) {
        okhttp.getnetpost(uri,map);
        okhttp.setOnOKHttpGetListener(new Okhttp.OkhttpgetListener() {
            @Override
            public void error(String error) {

            }

            @Override
            public void success(String json) {
                Gson gson = new Gson();
                Goodbean goodbean = gson.fromJson(json, Goodbean.class);
                List<Goodbean.DataBean> data = goodbean.getData();
                gouwuchelisteneter.gouwucheListeneter(data);

            }
        });

    }

    //修改的方法
    @Override
    public void xiugai(String uri, Map<String, String> map, final Xiugailisteneter xiugailisteneter) {
      okhttp.getnetpost(uri,map);
      okhttp.setOnOKHttpGetListener(new Okhttp.OkhttpgetListener() {
          @Override
          public void error(String error) {

          }

          @Override
          public void success(String json) {
              Gson gson = new Gson();
              UpGoodbean upGoodbean = gson.fromJson(json, UpGoodbean.class);
               xiugailisteneter.xiugaiListeneter(upGoodbean);

          }
      });
    }
}
 
//xrc的布局文件
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_marginTop="20px"
        android:layout_marginLeft="40px"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/title"/>
        <TextView
            android:textColor="#ff0000"
            android:layout_marginTop="20px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/prive"/>
        <TextView
            android:layout_marginTop="20px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/time"/>
    </LinearLayout>

    <LinearLayout
        android:layout_marginLeft="280px"
        android:layout_marginTop="20px"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <TextView
            android:id="@+id/zhi"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
        <Button
            android:text="查看订单"
            android:id="@+id/dan"
            android:layout_marginTop="80px"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

    </LinearLayout>


</LinearLayout>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在线商城购物车测试用例可以从以下几个方面考虑: 1. 界面测试: - 确保购物车页面的布局合理且完整,包括商品信息、价格、数量等显示。 - 确保页面的功能按钮正常显示,如结算、删除、修改数量等。 - 检查购物车页面的连接是否正常,如商品详情页、结算页面等。 - 确保购物车中的失效宝贝以及其他相关信息正常显示。 2. 功能测试: - 确保用户可以添加商品到购物车,无论是否登录。 - 对于未登录用户添加商品到购物车后登录,确认商品是否合并到用户购物车。 - 如果不允许未登录用户添加商品到购物车,检查用户是否收到相应的登录提示。 - 确保购物车内商品价格正确显示,包括用户会员折扣。 - 确保勾选商品后,已选商品的总价和优惠活动正确显示。 - 确保勾选商品后,点击结算按钮能进入确认订单信息页面。 - 确保可以对购物车中的商品进行信息的修改和规格的变更,并能成功保存。 - 确保购物车管理功能正常,包括商品的删除、添加、编辑等操作。 3. 性能测试: - 检查打开购物车页面的间是否在用户可接受的范围内。 - 检查编辑购物车、删除和添加商品所需的间。 - 确保结算金额能实显示。 - 检查清空失效商品所需的间。 4. 兼容性测试: - 在不同型号和操作系统下(如iOS和安卓)测试应用的功能是否正常运行。 5. 网络环境测试: - 在不同网络环境下(如3G、4G、WiFi)测试应用的各功能是否正常运行。 - 检查在网络异常情况下是否会有相关的提醒,并测试数据的恢复和加载情况。 6. 异常测试: - 模拟没有内存的情况,检查应用是否能正常响应。 - 测试横竖屏切换页面展示是否正常。 - 模拟网络中断和频繁操作某一功能,检查是否会导致闪退。 - 在接入电话、短信和社交软件等信息提示,测试应用是否能正常运行。 通过以上测试用例,可以全面评估在线商城购物车的功能和性能,确保用户能够顺畅地使用购物车功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [【测试用例练习】测试购物车(含思路)](https://blog.csdn.net/qq_40181927/article/details/124642059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [淘宝购物车的测试用例](https://blog.csdn.net/matilda_art/article/details/107922261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值