一、关于TheMVP的优缺点:访问此网站有详细讲解https://kymjs.com/code/2015/11/09/01/
本文仅提供TheMVP框架代码(如果您照我的步骤简单搭个TheMVP框架再去与这篇文章对比会很好理解):
model层其实就是存放我们需要的实体类。及其他数据。本文测试未使用,所以就没有写。
基本框架模型:
1.建包View
1.1view包下创建接口 IDelegate 定出规范:
package com.example.dw.dw20181121moni.view;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public interface IDelegate {
//初始化方法
void initData();
//获取布局
void create(LayoutInflater inflater, ViewGroup viewGroup, Bundle bundle);
//获取视图
View getRootView();
//获取上下文
void getContext(Context context);
}
1.2 view包下创建抽象类 AppDelegate 实现接口 IDeltegate
initData和getContext在这里无用,我把这两个方法此类里删除掉了。另外可以在这里写两个方法,一个get()我是用来获取控件ID,一个setClick()我用来设置点击事件,这样在我的子presenter层只需要get(R.id.xxx);就可以获取的我的控件,而点击事件就更简单了,我只需要setClick(this.R.id.xxx);就可以设置我的点击事件。
我们要在这里拿到我们的layout,但是目前并不存在,所以定义一个抽象方法(getLayoutId()),在我们子persenter继承我们的AppDelete的时候,将对应的layout传过来。这个类只需要以下代码这些操作便完成了(你完全可以在这个类定义任何你觉得可以简化代码的方法,比如Toast)
package com.example.dw.dw20181121moni.view;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.LayoutInflater;
import an