mvp搭建框架

 

// Retrofit库
compile 'com.squareup.retrofit2:retrofit:2.0.2'
// Okhttp库
compile 'com.squareup.okhttp3:okhttp:3.1.2'

// rxJava依赖包:
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
//《RXjava2的适配器》
compile 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
//《Rxjava2》
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'
package com.example.mvp.view.interfaces;



import com.example.mvp.model.beans.DataBeans;

import java.util.List;

/**
 * Created by nyj on 2018/5/26.
 */

public interface IMainView extends IBaseView {
    void onSuccess(List<DataBeans.DataBean> s);
}
 
 
package com.example.mvp.view.activity;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.example.mvp.presenter.BasePresenter;
import com.example.mvp.view.interfaces.IBaseView;

/**
 * Created by nyj on 2018/5/26.
 */

public abstract class BaseActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView{

    public P basePresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(setLayout());

        initView();
        initBaseView();
        initData();
    }

    protected abstract int setLayout();

    protected abstract void initData();

    private void initBaseView() {
        basePresenter = setPresenter();
        if (basePresenter != null) {
            basePresenter.attachView(this);
        }
    }

    abstract P setPresenter();

    protected abstract void initView();


}
package com.example.mvp.view.activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;

import com.example.mvp.R;
import com.example.mvp.model.beans.DataBeans;
import com.example.mvp.presenter.BasePresenter;
import com.example.mvp.presenter.MainPresenter;
import com.example.mvp.view.interfaces.IMainView;

import java.util.List;

public class MainActivity extends BaseActivity<MainPresenter> implements IMainView {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    protected int setLayout() {
        return R.layout.activity_main;
    }

    @Override
    protected void initData() {
        basePresenter.attachView(this);
        basePresenter.loadDataServer();
    }

    @Override
    MainPresenter setPresenter() {
        return new MainPresenter();
    }

    @Override
    protected void initView() {

    }


    @Override
    public void onSuccess(List<DataBeans.DataBean> s) {

    }
}
package com.example.mvp.presenter;

import com.example.mvp.view.interfaces.IBaseView;

/**
 * Created by nyj on 2018/5/26.
 */

public class BasePresenter<V extends IBaseView> {

    private V iBaseView;

    public void attachView(V iBaseView) {
        this.iBaseView = iBaseView;
    }

    public V getView() {

        return iBaseView;
    }

    public void dechView() {
        iBaseView = null;
    }
}
package com.example.mvp.presenter;

import android.util.Log;

import com.example.mvp.model.beans.DataBeans;
import com.example.mvp.model.https.RetrofitUntils;
import com.example.mvp.view.interfaces.IMainView;

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;

/**
 * Created by nyj on 2018/5/26.
 */

public class MainPresenter extends BasePresenter<IMainView>{

    private final RetrofitUntils retrofitUntils;

    public MainPresenter() {
        retrofitUntils = RetrofitUntils.getInsatnce();
    }

    public void loadDataServer() {
        Observable<DataBeans> observable = retrofitUntils.getApi().getCall();
        observable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
               .subscribe(new Observer<DataBeans>() {
                   @Override
                   public void onSubscribe(Disposable d) {

                   }

                   @Override
                   public void onNext(DataBeans dataBeans) {
                       List<DataBeans.DataBean> data = dataBeans.getData();
                       Log.e("dd",data.get(0).getTitle()+"");
                       getView().onSuccess(data);
                   }

                   @Override
                   public void onError(Throwable e) {
                    Log.e("onError","onError");
                   }

                   @Override
                   public void onComplete() {

                   }
               });
    }

}
package com.example.mvp.model.untils;

import com.example.mvp.model.beans.DataBeans;


import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

/**
 * Created by nyj on 2018/5/26.
 */

public interface RetrofitApi {

    @GET("ad/getAd")
    Observable<DataBeans> getCall();
}
package com.example.mvp.model.untils;

/**
 * Created by nyj on 2018/5/26.
 */

public interface Constant {
     String baseUrl="https://www.zhaoapi.cn/";
}
package com.example.mvp.model.https;

import com.example.mvp.model.untils.Constant;
import com.example.mvp.model.untils.RetrofitApi;

import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * Created by nyj on 2018/5/26.
 */

public class RetrofitUntils {


    private OkHttpClient client;
    private  Retrofit retrofit;

    private RetrofitUntils() {
        HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor();
        httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
        client = new OkHttpClient.Builder()
                .addInterceptor(httpLoggingInterceptor)
                .build();
        retrofit = new Retrofit.Builder()
                .baseUrl(Constant.baseUrl)
                .client(client)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build();
    }

    //单列模式
    private static RetrofitUntils INSTANCE;

    public static RetrofitUntils getInsatnce() {
        if (INSTANCE == null) {
            synchronized (RetrofitUntils.class) {
                if (INSTANCE == null) {
                    INSTANCE = new RetrofitUntils();
                }
            }
        }
        return INSTANCE;
    }

    public RetrofitApi getApi() {
        RetrofitApi retrofitApi = retrofit.create(RetrofitApi.class);
        return retrofitApi;
    }
}

DataBeans实体类未写



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值