点餐app的初步总结

首先第一步,一个点餐app,最先进入的就是打开时候的封面跳转界面了,因此,我们先来设计这个跳转界面:JumpActivity,
我们先设计好与之相对的xml,然后去JumpActivity里写逻辑,一些控件初始化等等就不讲了,但这里有一个双线程的操作,既要经过一定的时间,页面会自动跳转,也要具备,点击"跳过按钮",页面会手动跳转,这里需要用到Handler,先初始化一个Handler,然后初始化Runnable在run()方法中进行跳转到LoginActivity,也需要在Oncreate()方法中设置postDelayed()方法,制定延迟时间,同时也需要设置button的点击事件,进行跳转操作,跳转之前可以先

Handler.removeCallbacks(Runnable);

来取消postDelayed的方法里面的runnable,还有一个很重要的就是AndroidManifest.xml中将主Activity进行修改,换成JumpActivity。

下一步,我们就进入LoginActivity了,第一步肯定也是XML的Preview设计,不多说,来个RelativeLayout,整个4行,分别是:请输入账户,请输入密码,确定,注册。之后就是到LoginAtivity中,首先先控件初始化,然后需要设置点击事件,setOnClickListener,在点击事件前,也需要initIntent() ,获取账户密码,之后需要设置登录按钮的点击事件,先获取输入的字符串:

String username = mEtUsername.getText().toString();
String password = mEtPassword.getText().toString();

再设置判断,避免为null,再调用一个网络数据获取的类,其中传入参数:账户,密码,callback,在成功和失败的方法中写上需要的操作,同时,注册的话,设置跳转操作,到RegisterActivity,在注册操作和登录类似,

mBtnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String username = mEtUsername.getText().toString();
                String password = mEtPassword.getText().toString();
                String repassword = mEtRePassword.getText().toString();

                if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password)) {
                    T.showToast("账号或者密码不能为空");
                    return;
                }

                if (!password.equals(repassword)) {
                    T.showToast("两次输入密码不一致");
                    return;
                }

                startLoadingProgress();

                mUserBiz.register(username, password, new CommonCallback<User>() {
                    @Override
                    public void onError(Exception e) {
                        T.showToast(e.getMessage());
                        Log.d("ee", e.getMessage());
                        stopLoadingProgress();
                    }

                    @Override
                    public void onSuccess(User user) {
                        stopLoadingProgress();
                        T.showToast("注册成功,用户名为:" + user.getUsername());
                        LoginActivity.launch(RegisterActivity.this,
                                user.getUsername(), user.getPassword());
                        finish();
                    }
                });

之后便设置点餐的个人详情页面OrderActivity,设置自己需要的点餐主界面,带有自己头像和名字,已经点过的记录,可点击每条记录,进行页面跳转,可以查看具体的点餐信息(这个界面之后再说),这么界面下面的点击记录就需要用到recyclerview,设置item,也需要设置需要的item.xml,同时你需要设置上滑和下滑的功能,设置加载监听,

//设置开关
        mRefreshLayout.setMode(SwipeRefresh.Mode.BOTH);
        //设置颜色
        mRefreshLayout.setColorSchemeColors(Color.RED, Color.BLACK, Color.BLUE, Color.GRAY);
        mRefreshLayout.setOnRefreshListener(new SwipeRefresh.OnRefreshListener() {
            @Override
            public void onRefresh() {
                loadData();
            }
        });
        mRefreshLayout.setOnPullUpRefreshListener(new SwipeRefreshLayout.OnPullUpRefreshListener() {
            @Override
            public void onPullUpRefresh() {
                loadMore();
            }
        });

一个是上拉刷新数据,另一个是下拉刷新更多记录,

private void loadMore() {
        mOrderBiz.listByPage(++mCurrentPage, new CommonCallback<List<Order>>() {
            @Override
            public void onError(Exception e) {
                stopLoadingProgress();
                T.showToast(e.getMessage());
                mRefreshLayout.setPullUpRefreshing(false);
                mCurrentPage--;

                String message = e.getMessage();
                if (message.contains("用户未登录")) {
                    toLoginActivity();
                }

            }

            @Override
            public void onSuccess(List<Order> response) {
                stopLoadingProgress();
                if (response.size() == 0) {
                    T.showToast("木有历史订单啦~~~");
                    mRefreshLayout.setPullUpRefreshing(false);
                    return;
                }
                T.showToast("更新订单成功~~~");
                mDatas.addAll(response);
                mAdapter.notifyDataSetChanged();
                mRefreshLayout.setPullUpRefreshing(false);
            }
        });
    }



private void loadData() {
        mOrderBiz.listByPage(0, new CommonCallback<List<Order>>() {
            @Override
            public void onError(Exception e) {
                stopLoadingProgress();
                T.showToast(e.getMessage());
                if (mRefreshLayout.isRefreshing()) {
                    mRefreshLayout.setRefreshing(false);
                }
                if (e.getMessage().contains("用户未登录")) {
                    toLoginActivity();
                }

            }

            @Override
            public void onSuccess(List<Order> response) {
                stopLoadingProgress();
                T.showToast("更新订单成功~~~");
                mDatas.clear();
                mDatas.addAll(response);
                mAdapter.notifyDataSetChanged();
                if (mRefreshLayout.isRefreshing()) {
                    mRefreshLayout.setRefreshing(false);
                }
            }
        });
    }

其中CommonCallback<List>()是点餐列表的回调数据,分别写了成功和失败的效果,其次便是recyclerview设置适配器,和加载图片

 mAdapter = new OrderAdapter(this, mDatas);

        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(mAdapter);
        
Picasso.with(this).load(R.drawable.icon).placeholder(R.drawable.pictures_no).transform(new CircleTransform()).into(mIvIcon);

有一个挺好的方法就是onKeyDown可以每次关闭app,再次打开,不用重新输入密码,会自动跳到这个activity

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Intent home = new Intent(Intent.ACTION_MAIN);
            home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            home.addCategory(Intent.CATEGORY_HOME);
            startActivity(home);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

之后可以设置下,刚刚上面提到的查看点餐记录细节的activity:OrderdetailActivity,在这里,你只需要图片的加载,文本和一些数据的打印就行。
再者,你需要进入到点餐的界面ProductListActivity,通常是一个toolbar返回,加上recyclerview,最下面是结账的一个LInearLayout,通常是一半显示数量,一半显示支付和价钱。而activity里面的方法和Orderdetailacitvity类似,并且具体的ProductDeatilActivity也是和点餐主界面的Detail界面类似,这些经过修改可以套用,我认为最大的区别以及最重要的是数据直接的传递回调和复用等等,接下来就讲讲Order和Product的界面的数据之间的关系。
其中CommonCallback是自己写的一个回调接口,用于数据的回调,接收,数据的转化。
Order是用来存放一些方法,get(),set()和一些获取数据的方法,OerderBiz是Okhttp的网络操作,把对应URl地址上的json数据获取到某些数列集合里,就是前面Order创建的容器。而OrderAdapter的recyclerview适配器,用来把Order里的数据填充进item里,而OerderDetailActivity和OrderActivity则是把数据显示出来。同理,Product,ProductBiz和ProductListActivity和ProductDetailActivity也同样如此。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值