Retrofit+mvp简单实例
来源:互联网 发布:linux双网卡绑定动态 编辑:程序博客网 时间:2024/05/02 16:48
v:就一个简单的接口,给activity提供数据,activity实现这个接口就可以
所以数据回调都可以用这一个接口
public interface ViewData<T> { void showProgress(); void hideProgress(); void loadData(T data);}
m : 数据真正来源,提供数据给p
p需要传递接口过来拿数据,在m的构造方法中将接口传递过来
每个接口都需要一个m,因为传递参数不一样,数据回调不一样
public class ModelMovie { PresenterListener<MovieResponse<List<Movie>>> listener; public ModelMovie(PresenterListener<MovieResponse<List<Movie>>> listener){ this.listener = listener; } public void getMovies(int start, int end) { ApiManager.getMovies(start, end).enqueue(new Callback<MovieResponse<List<Movie>>>() { @Override public void onResponse(Call<MovieResponse<List<Movie>>> call, Response<MovieResponse<List<Movie>>> response) { listener.onSuccess(response.body()); } @Override public void onFailure(Call<MovieResponse<List<Movie>>> call, Throwable t) { listener.onFialer(t); } }); }}
p:从m层拿数据,传递数据给v
p要从m层拿数据,所以p需要传递接口给m
v要传递p一个接口
p是直接和activity交互的,所以p层封装m层调用数据的方法,通过调用p层获取数据的方法来触发m层
在p的构造方法中传入v的接口,new m获取m实例,调用它的获取数据的方法
每个接口都要一个p
public class PresenterMovie implements PresenterListener<MovieResponse<List<Movie>>>{ private final ModelMovie modelMovie; ViewData<MovieResponse<List<Movie>>> viewData; public PresenterMovie(ViewData<MovieResponse<List<Movie>>> viewData){ modelMovie = new ModelMovie(this); this.viewData = viewData; } public void getMovies(int start,int end){ viewData.showProgress(); modelMovie.getMovies(start,end); } @Override public void onSuccess(MovieResponse<List<Movie>> response) { viewData.hideProgress(); viewData.loadData(response); } @Override public void onFialer(Throwable e) { viewData.hideProgress(); }}
activity:
实现v接口获取数据
只需new p就可以获取数据
public class Activity extends ListActivity implements ViewData<MovieResponse<List<Movie>>> { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); PresenterMovie presenterMovie = new PresenterMovie(this); presenterMovie.getMovies(0,10); } @Override public void showProgress() { Toast.makeText(this,"showProgress",Toast.LENGTH_SHORT).show(); } @Override public void hideProgress() { Toast.makeText(this,"hideProgress",Toast.LENGTH_SHORT).show(); } @Override public void loadData(MovieResponse<List<Movie>> data) { List<String> titles = new ArrayList<>(); for (Movie m: data.getSubjects()){ titles.add(m.getTitle()); } ArrayAdapter aa = new ArrayAdapter(this, R.layout.main,titles); setListAdapter(aa); }}
下载链接,mvp1包下是该文章代码
阅读全文
0 0
- Retrofit+mvp简单实例
- MVP+Retrofit+RxAndroid实例
- Mvp+Retrofit+RxAndroid基础实例
- MVP+Retrofit+RxJava简单事例
- 简单MVP-Retrofit-Rxjava-OKhttp
- Retrofit简单的实例
- Android MVP+Retrofit(封装)+RxJava实例
- 简单的mvp+retrofit+rxjava示例
- Mvp+Rxandroid+Retrofit的简单实现
- RXJava+Retrofit+MVP的简单封装
- 简单实用的mvp+retrofit+rxjava+dagger2
- MVP+retrofit+rxjava+Knife的简单使用
- rxjava+retrofit+okhttp+mvp 简单实践
- MVP&Retrofit&Rxjava&Gson的简单例子
- 简单的mvp+retrofit+rxjava示例
- 简单实现断点续传+MVP+Retrofit+RxJava
- Retrofit+EventBus+GreenDao+MVP简单小总结
- RxJava2+MVP+Retrofit框架简单实现RecyclerView
- CSS常见问题及解决(二)在active状态下屏蔽掉css中的hover效果
- 随机数生成方法
- JFinal同时操作多条数据
- [iTextSharp学习笔记]使用iText的基本构造块
- Android热修复方案--sophix简单使用
- Retrofit+mvp简单实例
- 圈圈倒计时——显示百分比
- JAVA字符串格式化-String.format()的使用
- Spring-Boot学习笔记(三) 编写Servlet、Filter、Listener、Interceptor
- 成功安装Scrapy之后,import Scrapy报错DLL load failed
- mac的Option键是windows键盘上的哪个键
- mybatis中provider,热乎坑 20170707|| 分享一个自己写的项目
- 视频测试技术中的知识-----色调,亮度,饱和度
- CSS常见问题及解决(三)自己写下拉框逻辑,鼠标离开下拉框时,下拉出来的div会消失