美文网首页
Android MVP 模式介绍与示例

Android MVP 模式介绍与示例

作者: 五谷观精分道长 | 来源:发表于2016-11-25 09:57 被阅读73次

MVP模式是什么?

MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

MVP与MVC区别

一张图即可看懂


图片来自互联网

一个简单的示例NewsMvp

整体类结构

QQ截图20161125085423.png

MVP模式结构

  1. Model: 业务逻辑和实体模型。
  2. View:用户交互和视图显示,在android中对应activity。
  3. Presenter: 负责完成View于Model间的逻辑和交互。
MVP模式.png

<接口是为了提高代码的可用性,可以不使用>

核心代码

Model层获取网络数据:

public class NewsModel implements InNewsModel {
    News news;

    @Override
    public News getNews() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                Gson gson = new Gson();
                news=gson.fromJson(HttpGet.request(""),News.class);
               // Log.d("xx", news.getNewslist().get(0).getTitle());
            }
        }).start();
        //主线程等待一秒
        sleep(1000);
       // Log.d("", news.getNewslist().get(0).getTitle());
        return news;


    }
}

View层把view传到Presenter层,并且加载从Presenter层获取的数据

mNewsPresenter = new NewsPresenter(this);
        mNewsPresenter.loadNews();

@Override
    public void addNews(News news) {
        lv = (ListView) findViewById(R.id.listview);
        // Log.d("xx",news.getNewslist().get(0).getTitle());
            SimpleAdapter adapter = new SimpleAdapter(this, getData(news),
                    R.layout.listview_item, new String[]{"img", "title", "info"},
                    new int[]{R.id.img, R.id.title, R.id.info});

            lv.setAdapter(adapter);
        
    }
    private List<Map<String, Object>> getData(News news) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        Map<String, Object> map = new HashMap<String, Object>();
        for (News.NewslistBean newslistBean : news.getNewslist()) {
            map = new HashMap<String, Object>();
            map.put("img", R.drawable.ic_menu_camera);
            map.put("title", newslistBean.getTitle());
            map.put("info", newslistBean.getDescription());
            list.add(map);
        }
        return list;
    }

Presenter层通过NewsModel获取数据传给View层

@Override
    public void loadNews() {
        //通过调用IInfoView的方法来更新显示,设计模式运用
        //类似回调监听处理
        mInNewsView.addNews(mNewsModel.getNews());
    }

2016-11-24-9423b24e9f46bbbc53741289a5134728.png

关于接口调用失败,我测试发现天行数据失败。到后台发现原来是请求的次数超过上限了。(主要是大家用的都是我的账号,10000次请求分分钟就没了),所以各位可以自行申请账号。

QQ截图20161125095311.png

示例项目地址:https://github.com/HuRuWo/NewsByMVP

QQ截图20161125103332.png

相关文章

  • Android MVP 模式介绍与示例

    MVP模式是什么? MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Pre...

  • android MVP模式介绍与实战

    android MVP模式介绍与实战 描述 MVP模式是什么?MVP 是从经典的模式MVC演变而来,它们的基本思想...

  • MVP框架学习

    一、MVP介绍 二、为什么使用MVP模式 三、MVP与MVC的异同 四、使用MVP实现Android的登录的Dem...

  • 日常笔记 - MVP

    1 前言 MVP模式是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MVC模式中,Act...

  • Android 手把手教学 MVP 模式 (一)

    首先 我们先来介绍一下 MVP模式 是MVC模式在Android上的一种变体,要介绍MVP就得先介绍MVC。在MV...

  • MVP / RxJava / Retrofit / RxBus

    MVP Android MVP 详解(上) Android MVP 详解(下) Android中的MVP模式,带实...

  • Android 中的MVP 模式

    我的更多 Android 博文 Android 中的MVP 模式 MVP模式的核心思想: MVP把Activity...

  • Android MVP模式

    介绍Android MVP模式的文章,Demo的实现很详细,易懂。文章:Android中的MVPDemo:Rock...

  • Android主流框架面试准备

    MVP Android MVP架构搭建史上最全的Android MVP模式架构面试题集锦Android面试题-架构...

  • MVP简单尝试

    MVP模式解析 标签: Android 架构 MVP MVP模式的核心思想 MVP将Activity中的U...

网友评论

      本文标题:Android MVP 模式介绍与示例

      本文链接:https://www.haomeiwen.com/subject/axmipttx.html