android封装网络请求界面,轻松搞定 android MVP 架构、okHttp 网络模块封装 的 项目...

CommonMvp

commonMvp 能做什么?

1、mvp 实现 model view presenter 业务和界面解耦

2、整合 网络 请求

3、简化网络调用流程

4、整合状态栏和标题栏 实现沉浸式 状态栏

5、Activity 、Fragment 中 使用方法 一致 接口式封装 生命周期

1、有问题请 提交 isuue/(QQ:194093798) 谢谢大家 持续更新

2、为新手提供一个 可靠 可用的 mvp 框架结构

集成

allprojects {

repositories {

jcenter()

}

}

dependencies {

implementation 'org.zhx.common:uikits:1.1.0'

}

非Androidx 项目 :

build.gradle 中:

dependencies {

implementation 'org.zhx.common:uikits:1.1.0'

}

并且 gradle.properties中 添加:

android.useAndroidX=true

android.enableJetifier=true

配合使用的框架

1、okhttp 、retrofit2、rxJava 、rxandroid (okhttp 实现网络全套)

2、immersionbar 实现沉浸式状态栏

3、fastjson 实现json 解析

代码调用

1、创建 Mvp contact类 将 presenter 接口、 view 接口 和okHttp serverApi 关联在一起 WeatherApi

public interface WeatherApi {

//OkHttp api server

@GET("http://t.weather.sojson.com/api/weather/city/101030100")

public CommonObservablegetTest();

//mvp view

public interface view extends BaseMvpView {

void onWeatherInfo(WeatherInfo info);

}

//mvp presenter

public interface presenter {

void getWeatherInfo();

}

}

2、 创建 WeatherPresenter 主要业务类 继承 BasePresenter实现 WeatherApi.presenter

public class WeatherPresenter extends BasePresenterimplements WeatherApi.presenter {

public WeatherPresenter(WeatherApi.view view) {

super(view);

}

@Override

public void getWeatherInfo() {

//链式调用流程

manager.with(WeatherApi.class).getTest().excute(new ObjectNetRequstAdapter(mView) {

@Override

protected void onResultData(WeatherInfo info) {

mView.onWeatherInfo(info);

}

});

}

}

Activity 、Fragment 中 使用 方法 一致 同步封装 方法

3、 activity 中使用 继承 MvpActivity 实现 WeatherApi.view

public class MainActivity extends MvpActivityimplements WeatherApi.view {

private TextView mTextView;

@Override

public WeatherPresenter initPresenter() {

//TODO 初始化 presenter

return new WeatherPresenter(this);

}

@Override

public int initLayout() {

//TODO 设置布局

return R.layout.activity_main;

}

@Override

public void onLoadArgumentsData(Intent intent) {

//TODO 获取传递过来的参数

}

@Override

public void onLoadDataFromSavedInstanceState(Bundle savedInstanceState) {

//TODO 从低内存 获取 参数 (如果 你 在 onSaveInstanceState(Bundle outState) 方法中保存了数据)

}

@Override

protected void onSaveInstanceState(@NonNull Bundle outState) {

super.onSaveInstanceState(outState);

//TODO 保存 数据 以供 从低内存恢复 时 还原界面

}

@Override

public void onCreatView() {

//TODO 初始化 组件

mTextView = findViewById(R.id.result_tv);

}

@Override

public void onLoadContent() {

//TODO 在这个位置 获取 网络 数据

mPresenter.getWeatherInfo();

}

@Override

public void onWeatherInfo(WeatherInfo info) {

//TODO 天气信息 (mPresenter.getWeatherInfo() 接口回调)

mTextView.setText(info.toString());

}

}

4、 Fragment中使用 继承 MvpFragment 实现 WeatherApi.view

public class TestFragment extends MvpFragmentimplements WeatherApi.view {

private TextView mTextView;

@Override

public WeatherPresenter initPresenter() {

//TODO 初始化 天气 presenter

return new WeatherPresenter(this);

}

@Override

protected void onCreateView(View rootView) {

//TODO 初始化 view findViewById

mTextView = rootView.findViewById(R.id.result_tv);

}

@Override

public int initLayout() {

//TODO 初始化 布局文件

return R.layout.activity_main;

}

@Override

public void onLoadContent() {

//TODO 加载网络数据 或者 设置 传递过来的参数

mPresenter.getWeatherInfo();

}

@Override

public void onWeatherInfo(WeatherInfo info) {

//TODO 天气信息 (mPresenter.getWeatherInfo() 接口回调)

mTextView.setText(info.toString());

}

}

demo 下载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值