MVP+retrofit+RXjava

依赖:

compile 'io.reactivex.rxjava2:rxjava:2.0.2'
compile 'io.reactivex.rxjava2:rxandroid:2.0.2'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
 // Retrofit库
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
//compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
compile'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

Interface:

BaseView

package com.example.lijie.view.interfaces;

public interface BaseView {
}
MainView
package com.example.lijie.view.interfaces;

import com.example.lijie.model.bean.Bean;

import java.util.List;

public interface MainView extends BaseView{

    void onSuccess(List<Bean.DataBean> list);
}
Retrofit:

RetrofitUtils

package com.example.lijie.model.http;

import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitUtils {
    private final Retrofit build;
    private static RetrofitUtils retrofitUtils;
    
    private RetrofitUtils(){

        build = new Retrofit.Builder().baseUrl(Constant.BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    public static RetrofitUtils getInstace() {

        if (retrofitUtils==null) {
            retrofitUtils = new RetrofitUtils();
        }
        return retrofitUtils;
    }

    public RetrofitApi  getservice(){
        return build.create(RetrofitApi.class);
    }

}

Constant

package com.example.lijie.model.http;

public class Constant {

    public static final String  BASE_URL="https://www.zhaoapi.cn/";
}

RetrofitApi

package com.example.lijie.model.http;

public interface RetrofitApi {

    @GET("quarter/getAd")
    Observable<BannerBean> bannerShow();
}
Bean:

自己解析:https://www.zhaoapi.cn/product/getCarts?uid=71


Presenter:

BasePresenter

package com.example.lijie.presenter;

import com.example.lijie.view.interfaces.BaseView;

public class BasePresenter<P extends BaseView> {

    private P mBaseView;
    public void attacthView(P iBaseView){
             this.mBaseView=iBaseView;
    }

    public P getView(){
        return mBaseView;
    }

    public void detachView(){
        mBaseView=null;
    }
}
MainPresenter
package com.example.lijie.presenter;
import com.example.lijie.model.bean.Bean;
import com.example.lijie.model.http.RetrofitUtils;
import com.example.lijie.view.interfaces.MainView;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

public class MainPresneter extends BasePresenter<MainView>{

    private final RetrofitUtils retrofitUtils;

    public MainPresneter(){
         retrofitUtils = RetrofitUtils.getInstace();
    }

    public void loadDataFrom(int id){
        
        Observable<Bean> data = retrofitUtils.getservice().Koo(id);
        data.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Bean>() {
            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(Bean bean) {
                List<Bean.DataBean> lijie = bean.getData();
                getView().onSuccess(lijie);

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        });
    }
}

BaseActivity

package com.example.lijie.view.activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.lijie.presenter.BasePresenter;
import com.example.lijie.view.interfaces.BaseView;

public abstract class BaseActivity<V extends BasePresenter> extends AppCompatActivity implements BaseView{

    public V presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(child());
        initView();
        initBaseData();
        initData();
    }

    private void initBaseData() {
        presenter = setPresenter();
        if (presenter!=null){
            presenter.attacthView(this);
        }else{
            try {
                throw new Exception("哈哈哈哈哈哈");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    abstract void initView();
    abstract void initData();
    abstract int child();
    abstract V setPresenter();
}

MainActivity

package com.example.lijie.view.activity;
import android.os.Bundle;
import android.util.Log;
import com.example.lijie.R;
import com.example.lijie.model.bean.Bean;
import com.example.lijie.presenter.MainPresneter;
import com.example.lijie.view.interfaces.MainView;

import java.util.List;

public class MainActivity extends BaseActivity<MainPresneter> implements MainView{

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

    @Override
    void initView() {
        }
        
        @Override
    void initData() {
        }
        
        @Override
    int child() {
        return R.layout.activity_main;
    }
    
    @Override
    MainPresneter setPresenter() {
        return null;
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();
        presenter.detachView();
    }

    @Override
    public void onSuccess(List<Bean.DataBean> list) {
        Log.e("===",list+"");
    }
}




 



 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值