第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

MVP的理解和使用

標簽:
Android

MVP大家应该差不多都知道了,他其实是MVC的升华版,差不多是在view和model中加了一个调节器,这样view不能直接调用model中得数据,而是通过presenter来进行操作,此外Presenter与View和model的交互使用接口定义操作可以进一步达到松耦合也可以通过接口更加方便的进行测试。可以看一下流程图

5bba07b100014a6509880622.jpg

5bba07c00001d25109880626.jpg

算了不想写了,直接上代码吧,实在是懒得写了,这也没有保存功能,服死了。

首先定义View :

[代码]java代码:

?

1

2

3

4

5

public interface MainView<t> {

    void initView();

    void showData(T t);

 

}</t>

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

public class MainActivity   extends AppCompatActivity   implements MainView<model>{

    private MainPresenter mainPresenter;

    private TextView textview;

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_mains);

        initView();

    }

 

    @Override

    public void initView() {

        textview   = (TextView) findViewById(R.id.textview);

        mainPresenter   = new MainPresenter(this);

        mainPresenter.loadData();

    }

 

    @Override

    public void showData(Model model) {

        textview.setText(model.getName());

    }

 

}</model>

然后定义presenter:

[代码]java代码:

?

1

2

3

4

5

public interface Presenter<t> {

    void loadData();

    void loadDataSuccess(T t);

    void loadFail();

}</t>

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

public class MainPresenter   implements Presenter<model>{

    private MainView mainView;

    private MainModel mainModel;

 

    public MainPresenter(MainView mainView) {

        this.mainView   = mainView;

        mainModel   = new MainModel(this);

    }

 

    @Override

    public void loadData() {

        mainModel.getData();

    }

 

    @Override

    public void loadDataSuccess(Model model) {

        mainView.showData(model);

    }

 

    @Override

    public void loadFail() {

 

    }

}</model>

最后是model的定义:

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

public class Model   {

    String name;

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name   = name;

    }

}

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

public class MainModel   {

    MainPresenter   mainPresenter;

 

    public MainModel(MainPresenter mainPresenter) {

        this.mainPresenter   = mainPresenter;

    }

    //从服务器中获取数据

    public void getData(){

        //这个方法主要是获取数据如果成功则调用MainPresenter的loadDataSuccess 方法

        //如果失败就调用MainPresenter的loadFail()方法

    }

}

从代码中可以看出model和view不会直接联系,都是通过presenter。各个分层更加明细。

刚刚发表了一篇,结果没有保存到,只能重新写了,麻烦可不可以做成没有提交上,就给用户保存的功能啊。

原文链接:http://www.apkbus.com/blog-432040-61230.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優(yōu)質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優(yōu)惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消