返回顶部
首页 > 资讯 > 精选 >Android如何简单封装一个MVP基类
  • 854
分享到

Android如何简单封装一个MVP基类

2023-07-05 11:07:22 854人浏览 泡泡鱼
摘要

这篇文章主要介绍“Android如何简单封装一个MVP基类”,在日常操作中,相信很多人在Android如何简单封装一个MVP基类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何简单封装一个MV

这篇文章主要介绍“Android如何简单封装一个MVP基类”,在日常操作中,相信很多人在Android如何简单封装一个MVP基类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何简单封装一个MVP基类”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Model

public abstract class BaseModel {}

Presenter

public abstract class BasePresenter<M,V> {    public M mIModle;    public V mIView;    public void attachV(V v){        this.mIView = v;        if (mIModle == null) {            mIModle = createModel();        }    }    //当View被销毁掉时删除Presenter层对View层的引用    public void detachV(){        mIView = null;    }    public abstract M createModel();}

View

public interface IBaseView {}
@SuppressLint("ReGIStered")public abstract class BaseMvpActivity<P extends BasePresenter> extends AppCompatActivity implements IBaseView{    public P mPresenter;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        if (mPresenter == null) {            mPresenter = createPresenter();        }        mPresenter.attachV(this);    }    //当View被销毁掉时删除Presenter层对View层的引用    @Override    protected void onDestroy() {        super.onDestroy();        mPresenter.detachV();    }    public abstract P createPresenter();}

这里Mode和View的基类里什么都没有,其实我们知道一般封装基类的目录是为了简化项目代码,提高开发效率。所以这里两个基类里面一般根据我们自己需求去实现。

Example

public interface ExampleDataSource {    interface OnExampleFinishListener{        void loading();        void onSuccess();        void onError();    }    void load(OnExampleFinishListener listener);}

ExampleDataSource接口实现的是ExampleModel,而在它的内部接口OnExampleFinishListener是Model层的回调接口,它们真正实现是在Presenter层。对于获取到数据后(成功或失败)就是通过这个回调接口将数据传递Presenter层。

public class ExampleModel extends BaseModel implements ExampleDataSource {        @Override    public void load(final OnExampleFinishListener listener) {        //加载中状态        listener.loading();        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                //获取成功后进行回调                listener.onSuccess();            }        },2000);    }}

这里我们在Model层模拟下耗时操作(例如:网络请求),然后将得到的数据结果通过回调方法传递到Presenter层。

public interface ExampleContract extends IBaseView {    interface ExamplePresent {        void loadData();    }    interface ExampleView {        void loadResult(String result);        void showLoading();        void loadFinish();    }}

这里我们将Presenter接口和View接口放在一个类中,这样可以使我们能够清晰的看到在Presenter层和View层中有哪些功能,方便我们以后维护。

public class ExamplePresenter extends BasePresenter<ExampleModel,ExampleContract.ExampleView> implements ExampleContract.ExamplePresent,ExampleDataSource.OnExampleFinishListener{    @Override    public void loadData() {        mIModle.load(this);    }    @Override    public void loading() {        mIView.showLoading();    }    @Override    public void onSuccess() {        mIView.loadResult("成功");        mIView.loadFinish();    }    @Override    public void onError() {    }    @Override    public ExampleModel createModel() {        return new ExampleModel();    }}

从Presenter层我们可以看出,首先调用Model层的接口获取数据进行一些逻辑操作然后通过View层接口实现数据的展示。

public class MainActivity extends BaseMvpActivity<ExamplePresenter> implements ExampleContract.ExampleView {    private TextView tvName;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tvName = findViewById(R.id.tv_name);        //加载数据        mPresenter.loadData();    }    @Override    public ExamplePresenter createPresenter() {        return new ExamplePresenter();    }    //返会数据结果    @Override    public void loadResult(String result) {        tvName.setText(result);    }    //加载过程    @Override    public void showLoading() {        tvName.setText("正在加载,请稍等。。。");    }    //加载结束    @Override    public void loadFinish() {    }}

到此,关于“Android如何简单封装一个MVP基类”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Android如何简单封装一个MVP基类

本文链接: https://lsjlt.com/news/351405.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android如何简单封装一个MVP基类
    这篇文章主要介绍“Android如何简单封装一个MVP基类”,在日常操作中,相信很多人在Android如何简单封装一个MVP基类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何简单封装一个MV...
    99+
    2023-07-05
  • Android简单封装一个MVP基类流程详解
    目录ModelPresenterViewExample对于MVP架构我想大家都不陌生吧,对于现在的主流框架非MVP + RxJava + Retrofit莫属了,GitHub上也有很...
    99+
    2023-03-12
    Android封装MVP Android封装MVP基类
  • Android从实现到封装一个MVP的示例
    这篇文章主要介绍了Android从实现到封装一个MVP的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方...
    99+
    2023-05-30
    android mvp
  • Android用MVP实现一个简单的类淘宝订单页面的示例
    MVP(Model-View-Presenter) 是总所周知MVC模式的一个演变,他们的主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用,网上有很多相关的知识,这里仅是个人看法。1、层级Model:负责数据相关的操作View:...
    99+
    2023-05-30
    android 淘宝 订单
  • 如何编写一个封装的Ajax类
    本篇内容主要讲解“如何编写一个封装的Ajax类”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何编写一个封装的Ajax类”吧!用法:  new&nbs...
    99+
    2024-04-02
  • 如何Android项目中实现一个MVP架构
    这期内容当中小编将会给大家带来有关如何Android项目中实现一个MVP架构,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、概述传统的Android开发架构一般是MVC模式,Model:业务逻辑和实体模...
    99+
    2023-05-31
    android mvp roi
  • 如何封装一个python的pymysql操作类
    这篇“如何封装一个python的pymysql操作类”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何封装一个python的...
    99+
    2023-07-04
  • 利用Vue3封装一个弹框组件简单吗
    目录总结放前面: 前言:公共全局弹框结语:总结放前面: Tipes: 封装弹框组件使用了Teleport,避免了组件嵌套可能导致的定位层级的隐患,还使用了defineProps,de...
    99+
    2024-04-02
  • 如何在java中封装一个JDBC工具类
    如何在java中封装一个JDBC工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布...
    99+
    2023-06-14
  • 如何实现一个最简单的vbs类
    这篇文章主要介绍如何实现一个最简单的vbs类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!class CFoo     sub PrintHell...
    99+
    2023-06-08
  • 封装一个最简单ErrorBoundary组件处理react异常
    前言 从 React 16 开始,引入了 Error Boundaries 概念,它可以捕获它的子组件中产生的错误,记录错误日志,并展示降级内容,具体 官网地址 错误边界避免一个组...
    99+
    2024-04-02
  • vue中如何简单封装axios浅析
    把axios注入到Vue中 import axios from 'axios'; Vue.prototype.$axios = axios; import axios f...
    99+
    2024-04-02
  • 如何编写一个简单的AJAX请求类
    本篇内容介绍了“如何编写一个简单的AJAX请求类”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • 如何封装一个Ajax函数
    目录如何封装Ajax函数封装自己的 Ajax 函数如何封装Ajax函数 一个Ajax函数: // 一个Ajax函数 var xhr = null; if(window.XMLH...
    99+
    2024-04-02
  • 基于Vue如何封装一个虚拟列表组件
    今天小编给大家分享一下基于Vue如何封装一个虚拟列表组件的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。组件效果使用方法<...
    99+
    2023-07-05
  • 基于Java怎样实现一个简单的单词本Android App
    这篇文章跟大家分析一下“基于Java怎样实现一个简单的单词本Android App”。内容详细易懂,对“基于Java怎样实现一个简单的单词本Android App”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅...
    99+
    2023-06-29
  • 如何封装一个好用的axios
    这篇文章主要介绍了如何封装一个好用的axios的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何封装一个好用的axios文章都会有所收获,下面我们一起来看看吧。通用能力列一下我想要这个通用请求能达到什么样的效果...
    99+
    2023-07-02
  • 我的Android开发之旅(一):BaseActivity的浅入之简单封装 Toolbar
    我的Android开发之旅(一):BaseActivity的浅入为什么要写BaseAcivity一行代码实现 Toolbar 效果“少啰嗦,先看...
    99+
    2022-06-06
    封装 toolbar android开发 Android
  • 如何在Java中自定义封装一个JDBC工具类
    如何在Java中自定义封装一个JDBC工具类?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。步骤① 创建配置文件(config.properties),用于存放注册驱动和连接...
    99+
    2023-06-06
  • 基于PyTorch实现一个简单的CNN图像分类器
    目录一. 加载数据1. 继承Dataset类并重写关键方法2. 使用Dataloader加载数据二. 模型设计三. 训练四. 测试结语 pytorch中文网:https://www....
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作