购物车(MVP)

//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);
    }
}

猜你喜欢

转载自blog.csdn.net/Yang_Liu_1/article/details/82810411
今日推荐