Android MVP架构简单封装
先看一下自己封装项目的基本库结构。
来看看源码吧
BasePresenter.java
public abstract class BasePresenter<T> { protected Reference<T> mViewRef;//View接口类型的弱引用 public void attachView(T view){ mViewRef=new WeakReference<T>(view);//建立关系 } protected T getView(){ return mViewRef.get(); } public boolean isViewAttached(){ return mViewRef!=null&&mViewRef.get()!=null; } public void detachView(){ if (mViewRef!=null){ mViewRef.clear(); mViewRef=null; } }
BaseActivity.java
public abstract class BaseActivity<V,T extends BasePresenter<V>> extends AppCompatActivity { protected T mPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPresenter=createPresenter();//创建presenter mPresenter.attachView((V)this); initVariables(); initViews(savedInstanceState); loadData(); } @Override protected void onDestroy() { super.onDestroy(); mPresenter.detachView(); } //初始化变量,接受其他页面传递的参数 protected abstract void initVariables(); //初始化布局文件、控件 protected abstract void initViews(Bundle savedInstanceState); //加载数据 protected abstract void loadData(); protected abstract T createPresenter(); }
BaseFragment.java
public abstract class BaseFragment<V,T extends BasePresenter<V>> extends Fragment { protected T mPresenter; @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); mPresenter=createPresenter();//创建presenter mPresenter.attachView((V) this); initVariables(); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return inflater.inflate(getContentId(),container,false); } @Override public void onResume() { super.onResume(); loadData(); } @Override public void onDestroy() { super.onDestroy(); mPresenter.detachView(); } protected abstract void initVariables(); protected abstract int getContentId(); protected abstract void loadData(); protected abstract T createPresenter(); }
数据监听接口
DataRequestListener.java
public interface DataRequestListener<T> { void success(T data); void fail(); }
特此记录特供大家参考,仅仅是简单的封装,可以根据自己的项目自己再次封装重构............