购物车(MVP)

本文详细介绍了一种基于MVC模式的购物车功能实现方案,包括Model层的数据获取、Presenter层的业务逻辑处理以及View层的UI展示。通过具体代码示例,展示了如何在Android应用中构建一个响应式的购物车模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//Contract

package com.bwei.zonghe_1.di.shoppingcar.contract;

import com.bwei.zonghe_1.data.bean.BuyCarBean;

/**
 * Created by 杨柳 on 2018/9/22.
 */

public interface ShoppingCartContract {
    //一.1
    public interface IView{
        //一.2
        void BuyCarData(BuyCarBean buyCarBean);
    }

    //一.3
    public interface IPresenter<IView>{
        //一.4
        void attachView(IView iView);
        //一.5
        void detachView(IView iView);
        //一.6
        void BuyCartRequestData();
    }

    //一.7
    public interface  IModel{
        //一.8
        public interface BuyCartListener{
            //一.9
            void BuyCart(BuyCarBean buyCartListener);
        }
        //一.10(去P层)
        void BuyCartResponse(BuyCartListener buyCartListener);
    }


}

 

//model

package com.bwei.zonghe_1.di.shoppingcar.shoppingcartmodel;

import com.bwei.zonghe_1.data.bean.BuyCarBean;
import com.bwei.zonghe_1.data.service.Contast;
import com.bwei.zonghe_1.data.utils.RetrofitUtil;
import com.bwei.zonghe_1.di.shoppingcar.contract.ShoppingCartContract;

import java.util.Observable;

import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

/**
 * Created by 杨柳 on 2018/9/22.
 */

public class ShoppingCartModel implements ShoppingCartContract.IModel {
    @Override
    public void BuyCartResponse(final BuyCartListener buyCartListener) {
        io.reactivex.Observable<BuyCarBean> observable = RetrofitUtil.getInstance().getapiService(Contast.RIGHT_BASE).getCar("");
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Consumer<BuyCarBean>() {
                    @Override
                    public void accept(BuyCarBean buyCarBean) throws Exception {
                        buyCartListener.BuyCart(buyCarBean);
                    }
                });
    }
}

 

//Presenter

package com.bwei.zonghe_1.di.shoppingcar.ShoppingCartPresenter;

import com.bwei.zonghe_1.data.bean.BuyCarBean;
import com.bwei.zonghe_1.di.shoppingcar.contract.ShoppingCartContract;
import com.bwei.zonghe_1.di.shoppingcar.shoppingcartmodel.ShoppingCartModel;

import java.lang.ref.WeakReference;

/**
 * Created by 杨柳 on 2018/9/22.
 */

//二.1继承
public class ShoppingCartPresenter implements ShoppingCartContract.IPresenter<ShoppingCartContract.IView>{
    //二.2
    ShoppingCartContract.IView iView;
    private ShoppingCartContract.IModel shoppingCartModel;
    private WeakReference<ShoppingCartContract.IModel> iModelWeakReference;
    private WeakReference<ShoppingCartContract.IView> iViewWeakReference;

    @Override
    public void attachView(ShoppingCartContract.IView iView) {
        //二.3
        this.iView = iView;
        //二.4
        shoppingCartModel = new ShoppingCartModel();
        //二.5
        iModelWeakReference = new WeakReference<>(shoppingCartModel);
        //二.6
        iViewWeakReference = new WeakReference<>(iView);
    }

    @Override
    public void detachView(ShoppingCartContract.IView iView) {
        //二.7
        iModelWeakReference.clear();
        //二.8
        iViewWeakReference.clear();
    }

    @Override
    public void BuyCartRequestData() {
        //二.9
        shoppingCartModel.BuyCartResponse(new ShoppingCartContract.IModel.BuyCartListener() {
            @Override
            public void BuyCart(BuyCarBean buyCartListener) {
                //二.10
                iView.BuyCarData(buyCartListener);
            }
        });
    }
}

 

//fragment

package com.bwei.zonghe_1.ui.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.bwei.zonghe_1.R;
import com.bwei.zonghe_1.data.bean.BuyCarBean;
import com.bwei.zonghe_1.di.shoppingcar.ShoppingCartPresenter.ShoppingCartPresenter;
import com.bwei.zonghe_1.di.shoppingcar.contract.ShoppingCartContract;
import com.bwei.zonghe_1.ui.adapter.ShoppingCartAdapter;

import java.util.ArrayList;

import butterknife.Unbinder;

/**
 * Created by 杨柳 on 2018/9/21.
 */
//四.1继承View
public class ShoppingCartFragment extends Fragment implements ShoppingCartContract.IView {

    private ShoppingCartContract.IPresenter shoppingCartPresenter;

    Unbinder unbinder;
    private RecyclerView rl_twoo;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.shoppingcart_layout, container, false);
        rl_twoo = inflate.findViewById(R.id.rl_twoo);
        return inflate;
    }

    //四.2
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //四.3
        shoppingCartPresenter = new ShoppingCartPresenter();
        //四.4
        shoppingCartPresenter.attachView(this);
        //四.5
        shoppingCartPresenter.BuyCartRequestData();
    }

    @Override
    public void BuyCarData(BuyCarBean buyCarBean) {
        //四.8\
        ArrayList<BuyCarBean.DataBean> list = new ArrayList<>();
        list.addAll(buyCarBean.getData());
        LinearLayoutManager manager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
        rl_twoo.setLayoutManager(manager);
        ShoppingCartAdapter adapter = new ShoppingCartAdapter(getContext(), list);
        rl_twoo.setAdapter(adapter);
    }

    //四.6
    @Override
    public void onDestroy() {
        super.onDestroy();
        Unbinder unbinder;
        //四.7
        shoppingCartPresenter.detachView(this);
    }
}
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值