MVP+Databinding组合使用

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

你可能知道 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("测试失败!");
    }
}

最后的最后,来一张效果图
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值