Android MVP项目设计结构

1、MVP模式的事件调用和响应的时间线
在这里插入图片描述
(1)View

  • 持有Presenter对象的引用,监听UI事件,根据用户操作产生的数据调用Presenter的数据检验方法。
  • 定义了一组UI刷新方法由Presenter来调用。

(2)Presenter

  • 持有Model对象的引用,定义了一组检验数据的方法,调用Model的方法访问数据
  • 持有View对象的引用,根据数据检验结果调用View响应的UI操作方法。

(3)Model

  • 持有对数据源访问对象,对数据源进行访问

2、项目中MVP结构的应用方法
在这里插入图片描述
(1)建立Contract接口,其中包含以下两个内部接口

  • View接口,定义了一组刷新UI的方法
  • Presenter接口,定义了一组对数据进行检验的方法

(2)创建Fragment/Activity类,实现Contract内部的View接口

  • 持有Contract.Presenter的引用
  • 实现对UI事件的监听方法
  • 实现View接口中的刷新UI方法

(3)创建Presenter类,实现Contract内部的Presenter接口

  • 持有Contract.View的引用
  • 实现Presenter中对数据进行检验的方法,在方法内调用View的UI方法

3、项目中MVP结构的应用方法

Contract

public interface MainContract {

    interface View{
        void flushUi(String msg);
    }
    
    interface Presenter{
        void checkText(String text);
    }

}

View

public class MainActivity extends AppCompatActivity implements MainContract.View{

    private EditText input;
    private Button go;
    private MainContract.Presenter presenter;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        presenter = new MainPresenter(this);

        input = findViewById(R.id.input);
        go = findViewById(R.id.go);

        go.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = input.getText().toString();
                presenter.checkText(text);
            }
        });
    }

    @Override
    public void flushUi(String msg) {

        Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
    }
}

Presenter

public class MainPresenter implements MainContract.Presenter{

    private MainContract.View view;


    public MainPresenter(MainContract.View view){
        this.view = view;
    }

    @Override
    public void checkText(String text) {
        if(text.equals("yes")){
            view.flushUi("正确");
        }
        else if(text.equals("no")){
            view.flushUi("错误");
        }
        else{
            view.flushUi("不知道");
        }

    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值