G_具体解决思路及操作

MainActivity

public class MainActivity extends AppCompatActivity implements IMainView{


    private EditText main_tel;
    private EditText main_pwd;
    private String tel;
    private String pwd;
    private TextView main_reg;
    private MainPresenter mainPresenter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }


    //登录
    public void onLogin(View view) {
        tel = main_tel.getText().toString().trim();
        pwd = main_pwd.getText().toString().trim();


        mainPresenter = new MainPresenter(this);
        mainPresenter.getData(tel,pwd);
    }


    private void initView() {
        main_tel = (EditText) findViewById(R.id.main_tel);
        main_pwd = (EditText) findViewById(R.id.main_pwd);
        main_reg = (TextView) findViewById(R.id.main_reg);
        //新用户注册
        main_reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //跳转到注册页面进行注册
                startActivity(new Intent(MainActivity.this,RegsitActivity.class));
            }
        });
    }


    @Override
    public void onSuccess(LoginBean loginBean) {
        if("0".equals(loginBean.getCode())){
            //登录成功后跳转到展示页面
            startActivity(new Intent(MainActivity.this,ShowActivity.class));
        }else if("1".equals(loginBean.getCode())){
            Toast.makeText(MainActivity.this,loginBean.getMsg(),Toast.LENGTH_LONG).show();
        }
    }
}


DetailActivity

public class DetailActivity extends AppCompatActivity implements IDetailView{


    private TextView title;
    private SimpleDraweeView detail_sdv;
    private TextView detail_title;
    private TextView detail_price;
    private TextView detail_seller;
    private LinearLayout detail_linear;
    private DetailPresenter presenter;
    private int msg;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);
        initView();
        //注册EventBus
        EventBus.getDefault().register(this);


    }


    private void initView() {
        title = (TextView) findViewById(R.id.title);
        detail_sdv = (SimpleDraweeView) findViewById(R.id.detail_sdv);
        detail_title = (TextView) findViewById(R.id.detail_title);
        detail_price = (TextView) findViewById(R.id.detail_price);
        detail_seller = (TextView) findViewById(R.id.detail_seller);
        detail_linear = (LinearLayout) findViewById(R.id.detail_linear);
    }
    //写一个方法用来接收值,使用注解回到主线程
    @Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
    public void resiverMeassge(MyEventBusMessage myEventBusMessage){
        msg = myEventBusMessage.msg;
        //得到商品id
        Toast.makeText(DetailActivity.this,myEventBusMessage.msg+"",Toast.LENGTH_SHORT).show();
        presenter = new DetailPresenter(this);
        presenter.getData(myEventBusMessage.msg);
    }


    //取消注册EventBus
    @Override
    protected void onDestroy() {
        EventBus.getDefault().unregister(this);
        super.onDestroy();
    }


    @Override
    public void onSuccess(ProductDetailBean productDetailBean) {
        if("0".equals(productDetailBean.getCode())){
            String images = productDetailBean.getData().getImages();
            String[] split = images.split("\\|");
            detail_sdv.setImageURI(Uri.parse(split[0]));
            detail_title.setText(productDetailBean.getData().getTitle());
            detail_price.setText("¥:"+productDetailBean.getData().getPrice());
            detail_seller.setText(productDetailBean.getSeller().getName());
        }
    }
    //加入购物车
    public void addCart(View view) {
        SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASE_URL);
        Map<String, String> map = new HashMap<>();
        map.put("uid",String.valueOf(2753));
        map.put("pid",String.valueOf(msg));
        Observable<String> stringObservable = serViceAPI.getDataByPost("product/addCart", map);
        stringObservable.observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        Log.d("detail",s);
                        try {
                            JSONObject jsonObject = new JSONObject(s);
                            String code = (String) jsonObject.get("code");
                            String msg = (String) jsonObject.get("msg");
                            if("0".equals(code)){
                                Toast.makeText(DetailActivity.this,msg,Toast.LENGTH_LONG).show();
                                startActivity(new Intent(DetailActivity.this,ShowCartsActivity.class));
                            }else{
                                Toast.makeText(DetailActivity.this,msg,Toast.LENGTH_LONG).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }


                    }
                });

    }
}


RegsitActivity

public class RegsitActivity extends AppCompatActivity {


    private EditText reg_tel;
    private EditText reg_pwd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_regsit);
        initView();
    }


    //新用户和注册
    public void onRegsit(View view) {
        String tel = reg_tel.getText().toString().trim();
        String pwd = reg_pwd.getText().toString().trim();
        //请求注册接口
        SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASEUSER_URL);
        Map<String, String> map = new HashMap<>();
        map.put("mobile",tel);
        map.put("password",pwd);
        final Observable<String> regsitBeanObservable = serViceAPI.getDataByPost("user/reg",map);
        regsitBeanObservable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<String>() {
                    @Override
                    public void call(String s) {
                        Log.d("regac", s);
                        Gson gson = new Gson();
                        RegistBean registBean = gson.fromJson(s, RegistBean.class);
                        if ("0".equals(registBean.getCode())) {
                            Toast.makeText(RegsitActivity.this, registBean.getMsg(), Toast.LENGTH_LONG).show();
                            //注册模块手机号验证注册成功,完成跳转到首页
                            finish();
                        } else if ("1".equals(registBean.getCode())) {
                            Toast.makeText(RegsitActivity.this, registBean.getMsg(), Toast.LENGTH_LONG).show();
                        }
                    }
                });
    }


    private void initView() {
        reg_tel = (EditText) findViewById(R.id.reg_tel);
        reg_pwd = (EditText) findViewById(R.id.reg_pwd);
    }
}


ShowActivity

public class ShowActivity extends AppCompatActivity implements IShowView {


    private ShowPresenter showPresenter;
    private RecyclerView show_rlv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);
        initView();
        showPresenter = new ShowPresenter(this);
        showPresenter.getData();
    }


    @Override
    public void onSuccess(ShowProductBean showProductBean) {
        if ("0".equals(showProductBean.getCode())) {
            //设置适配器
            final List<ShowProductBean.TuijianBean.ListBean> list = showProductBean.getTuijian().getList();
            MyRVAdapter myRVAdapter = new MyRVAdapter(ShowActivity.this,list);
            show_rlv.setAdapter(myRVAdapter);
            //点击条目跳转详情
            myRVAdapter.setMOnItemClickLisenter(new MyRVAdapter.OnItemClickListener() {
                @Override
                public void onItemClick(View view, int position) {
                    //使用EventBus进行传值
                    EventBus.getDefault().postSticky(new MyEventBusMessage(list.get(position).getPid()));
                    Intent intent = new Intent(ShowActivity.this, DetailActivity.class);
                    startActivity(intent);
                }
            });
        }
    }


    private void initView() {
        show_rlv = (RecyclerView) findViewById(R.id.show_rlv);
        //设置线性管理器
        show_rlv.setLayoutManager(new LinearLayoutManager(ShowActivity.this));
    }

}


ShowCartsActivity

public class ShowCartsActivity extends AppCompatActivity implements IShowCartsView, View.OnClickListener {


    private ShowCartPresenter showCartPresenter;
    private TextView showcart_biaoti;
    private MyExpanableListView elv;
    private CheckBox ck_all;
    private TextView sum;
    private TextView buy;
    private QueryCarts queryCarts;
    private MyExpanableAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_carts);
        initView();
        showCartPresenter = new ShowCartPresenter(this);
        showCartPresenter.getData();
    }


    @Override
    public void onSuccess(QueryCarts queryCarts) {
        this.queryCarts = queryCarts;
        List<QueryCarts.DataBean> data = queryCarts.getData();
        //设置适配器
        adapter = new MyExpanableAdapter(ShowCartsActivity.this, queryCarts, showCartPresenter);
        elv.setAdapter(adapter);
        //展开所有组
        if(data != null){
            for(int i = 0; i < data.size();i++){
                elv.expandGroup(i);
            }
            //去除二级列表的样式
            elv.setGroupIndicator(null);
        }
        //1.根据组中子条目是否选中,,,决定该组是否选中...初始化一下每一组中isGroupCheck这个数据
        for(int j = 0;j < data.size();j++){
            data.get(j).setGroupCheck(childItemIsChecked(j));
        }
        //计算金额和数量
        reCountAndNum();
        //设置全选框选中状态
        ck_all.setChecked(groupItemIsChecked());
    }
    //重新计算金额和数量
    private void reCountAndNum() {
        int price = 0;
        int num = 0;
        List<QueryCarts.DataBean> data = queryCarts.getData();
        for (int i = 0; i < data.size(); i++) {
            List<QueryCarts.DataBean.ListBean> list = data.get(i).getList();
            for (int j = 0; j < list.size(); j++) {
                if (list.get(j).getSelected() == 1) {
                    price += list.get(j).getBargainPrice() * list.get(j).getNum();
                    num += list.get(j).getNum();
                }
            }
        }
        //保留精准的价格
        DecimalFormat decimalFormat = new DecimalFormat("#.00");
        String formatprice = decimalFormat.format(price);
        sum.setText("合计¥:" + formatprice);
        buy.setText("去购买("+num+")");
    }


    private void initView() {
        showcart_biaoti = (TextView) findViewById(R.id.showcart_biaoti);
        elv = (MyExpanableListView) findViewById(R.id.elv);
        ck_all = (CheckBox) findViewById(R.id.ck_all);
        sum = (TextView) findViewById(R.id.sum);
        buy = (TextView) findViewById(R.id.buy);
        ck_all.setOnClickListener(this);
    }


    @Override
    public void onClick(View view) {
        setAllItemCheck(ck_all.isChecked());
    }
    //全选
    private void setAllItemCheck(boolean checked) {
        //创建一个集合用来存放所有的子条目
        List<QueryCarts.DataBean.ListBean> allitem = new ArrayList<>();


        for(int i = 0;i < queryCarts.getData().size();i++){
            List<QueryCarts.DataBean.ListBean> list = queryCarts.getData().get(i).getList();
            for(int j = 0; j < list.size(); j++){
                allitem.add(list.get(j));
            }
        }
        updateAllItemCheck(allitem,checked);
    }
    //请求更新数据的接口
    private void updateAllItemCheck(final List<QueryCarts.DataBean.ListBean> allitem, final boolean checked) {
        List<Observable> observables = new ArrayList<>();
        for(int j = 0; j < allitem.size();j++){
            QueryCarts.DataBean.ListBean listBean = allitem.get(j);
            SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI(API.BASE_URL);


            Map<String, String> map = new HashMap<>();
            map.put("sellerid", listBean.getSellerid() + "");
            map.put("pid", listBean.getPid() + "");
            map.put("uid", "2753");
            map.put("num", listBean.getNum() + "");
            map.put("selected", String.valueOf(checked ? 1 : 0));
            //调用接口中更新购物车的方法
            Observable<String> stringObservable = serViceAPI.getDataByPost("product/updateCarts", map);
            observables.add(stringObservable);
        }
        Observable.merge(observables.toArray(new Observable[allitem.size()]))
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber() {
                    @Override
                    public void onCompleted() {
                        //重新请求数据,查询购物车
                        showCartPresenter.getData();
                    }


                    @Override
                    public void onError(Throwable e) {


                    }


                    @Override
                    public void onNext(Object o) {


                    }
                });


    }
    //判断一级列表是否全部选中
    private boolean groupItemIsChecked() {
        List<QueryCarts.DataBean> data = queryCarts.getData();
        for(int j = 0; j < data.size(); j++){
            if(!data.get(j).isGroupCheck()){
                return false;
            }
        }
        return true;
    }


    //判断二级列表的条目是否全部选中
    private boolean childItemIsChecked(int groupindex) {
        List<QueryCarts.DataBean.ListBean> list = queryCarts.getData().get(groupindex).getList();
        for(int j = 0; j < list.size(); j++){
            //有一个条目没选中就返回false,否则返回true
            if(list.get(j).getSelected() == 0){
                return false;
            }
        }
        return true;
    }
    //解除绑定
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (showCartPresenter != null) {
            showCartPresenter.onUnBind();
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
大学生在线租房平台管理系统按照操作主体分为管理员和用户。管理员的功能包括报修管理、报修评价管理、字典管理、房东管理、房屋管理、房屋收藏管理、房屋留言管理、房屋租赁管理、租房论坛管理、公告信息管理、留言板管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 大学生在线租房平台管理系统可以提高大学生在线租房平台信息管理问题的解决效率,优化大学生在线租房平台信息处理流程,保证大学生在线租房平台信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理大学生在线租房平台信息,包括房屋管理,培训管理,报修管理,薪资管理等,可以管理公告。 房屋管理界面,管理员在房屋管理界面中可以对界面中显示,可以对房屋信息的房屋状态进行查看,可以添加新的房屋信息等。报修管理界面,管理员在报修管理界面中查看报修种类信息,报修描述信息,新增报修信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值