你可能知道 Databinding 结合MVVM架构模式使用时一个不错的选择,目前MVVM模式不是很成熟,但是有这个趋势,当前企业用的比较多的可能就是MVP架构,今天打算写个APP,开始着手设计大概的架设,我想起来一个很麻烦的点,就是之前的一堆findbyid()堆积成山,惨不忍睹,再到后来认识的butterknif,感觉还不错,但是组件多了还是会出现一大堆的@bindview注解什么的,接下来又认识了Databinding,这个目前来说还是很友好的,
所以我决定app使用 MVP+Databinding
怎么创建和理解 MVP+Databinding

目录结构

下面说一下自己的demo
M:
作为 model,我新建了三个Java文件

- MVPDdomain 作为一个实体类, 在这用到了
binding.setMvpdTest(tmp);tmp就是这个实体类的实例,因为使用到Databinding,这个实体类时必须的 - IMainActivityModel 模型层的接口,常规mvp模型中的接口,基本是一下数据相关的接口
- MainActivityModelImpl 看类名可知,自然是实现model
附上代码
public class MVPDdomain {
public String tmp;
public MVPDdomain(String tmp) {
this.tmp = tmp;
}
public String getTestString() {
return tmp;
}
public void setTestString(String tmp) {
this.tmp = tmp;
}
}
public interface IMainActivityModel {
String mvpdTest();
}
public class MainActivityModelImpl implements IMainActivityModel {
@Override
public String mvpdTest() {
return "MVP+Databinding测试成功";
}
}
华丽的分割线
V:
就两个文件很简单

- MainActivity 这个时视图最基本的,应该都懂,下面会说代码更容易理解
- IMainActivity view层所需所有业务的操作接口 你可能会问?咋没看到实现类呢,其实这个是由MainActivity去实现,马上到代码你就懂了
/**
* 首页
*/
public class MainActivity extends BaseActivity implements IMainActivity {
private IMainActivityPresenter presenter;
private ActivityMainBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_main);
presenter = new MainActivityPresenterImpl(this);
presenter.onSuccess();
}
@Override
public void testMVPD(MVPDdomain tmp) {
binding.setMvpdTest(tmp);
}
}
/**
* 首页接口
*/
public interface IMainActivity {
void testMVPD(MVPDdomain tmp);
}
P :
这个可是关键,对于有些人来说也是新事物,主要是不知道怎么使用,怎么关联在一起

- IMainActivityPresenter 所有的业务逻辑接口都在Presenter中
- MainActivityPresenterImpl 自然就要实现接口,主要一点就是
根据model层调用view层,最上面的那个图和代码要多看几遍,也可以搜搜其他大佬的文章多看就能理解了
public interface IMainActivityPresenter {
void onSuccess();
void onError();
}
public class MainActivityPresenterImpl implements IMainActivityPresenter {
private IMainActivityModel model;
private IMainActivity view;
public MainActivityPresenterImpl(IMainActivity view) {
this.view = view;
model = new MainActivityModelImpl();
}
@Override
public void onSuccess() {
String tmp = model.mvpdTest();
if (!TextUtils.isEmpty(tmp)){
view.testMVPD(new MVPDdomain(tmp));
//L.d("测试成功!");
return ;
}
}
@Override
public void onError() {
// L.e("测试失败!");
}
}
最后的最后,来一张效果图

本文介绍如何在Android开发中结合使用MVP架构模式和Databinding技术,通过一个具体的APP案例,详细展示了MVP架构下各层的职责划分及Databinding的集成过程,包括实体类、接口定义、Presenter的业务逻辑处理等。
543

被折叠的 条评论
为什么被折叠?



