{ /** * 创建构造方法 * 拿大两个的引用 * */ MvpView view; MvpModel model=new ImvpModel(); public WeakReference tWeakReference; //创建构造方法 public Mvppre(T view){ // tWeakReference = new WeakReference<>(view);//防止内存泄露 this.view=view; } //创建绑定方法 // public void Onattch(T view){ // tWeakReference = new WeakReference<>(view); // } //创建解绑数据 public void Ondeattch(){ tWeakReference.clear(); } //创建方法提取数据 public void fetch(){ if(view!=null){ view.load(); if(model!=null){ model.loaddata(new MvpModel.OnLoadLisner() { @Override public void Complted(List persons) { view.show( persons); } }); } } } } MainActivity的使用 public class MainActivity extends AppCompatActivity implements MvpView{ private ListView lv; private Mvppre jj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); jj = new Mvppre(this); jj.fetch(); } @Override public void load() { Toast.makeText(MainActivity.this, "正在加载", Toast.LENGTH_SHORT).show(); } @Override public void show(List persons) { lv.setAdapter(new Myadpater(persons,this)); } }" />
项目作者: codersxl

项目描述 :
:pencil2: :fire: MVC就不说了,接触过开发应该都知道----- 看了很多关于mvp的博客,一看一大堆,官方话更多 MVP(Model-View-Presenter)模式解释 Model: 数据层. 负责与网络层和数据库层的逻辑交互. View: UI层. 显示数据, 并向Presenter报告用户行为. Presenter: 从Model拿数据, 应用到UI层, 管理UI的状态, 决定要显示什么, 响应用户的行为. MVP模式的最主要优势就是耦合降低, Presenter变为纯Java的代码逻辑, 不再与Android Framework中的类如Activity, Fragment等关联, 便于写单元测试. 代码地址: 编写思路: 1 编写View接口:首先View要干啥?比如(视图要显示进度条,显示内容) public interface MvpView { /** * 定义统一的规则 */ //显示加载框 void load(); //显示数据 void show(List persons); } 2编写Model接口:model主要加载数据 考虑怎么加载 public interface MvpModel { /** * 加载数据 * */ void loaddata(OnLoadLisner onLoadLisner); //设计内部类回调 interface OnLoadLisner{ void Complted(List persons); } } model实现类 public class ImvpModel implements MvpModel { @Override public void loaddata(OnLoadLisner onLoadLisner) { ArrayList persons = new ArrayList<>(); persons.add(new Person(R.drawable.ic_launcher,"hello")); 简单的添加数据 //将数据返回上层 onLoadLisner.Complted(persons); } } 3p层的处理 :首先要有view和model的引用 model可以New对象 但是view不能new 因为View一般是Activty public class Mvppre { /** * 创建构造方法 * 拿大两个的引用 * */ MvpView view; MvpModel model=new ImvpModel(); public WeakReference tWeakReference; //创建构造方法 public Mvppre(T view){ // tWeakReference = new WeakReference<>(view);//防止内存泄露 this.view=view; } //创建绑定方法 // public void Onattch(T view){ // tWeakReference = new WeakReference<>(view); // } //创建解绑数据 public void Ondeattch(){ tWeakReference.clear(); } //创建方法提取数据 public void fetch(){ if(view!=null){ view.load(); if(model!=null){ model.loaddata(new MvpModel.OnLoadLisner() { @Override public void Complted(List persons) { view.show( persons); } }); } } } } MainActivity的使用 public class MainActivity extends AppCompatActivity implements MvpView{ private ListView lv; private Mvppre jj; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); jj = new Mvppre(this); jj.fetch(); } @Override public void load() { Toast.makeText(MainActivity.this, "正在加载", Toast.LENGTH_SHORT).show(); } @Override public void show(List persons) { lv.setAdapter(new Myadpater(persons,this)); } }
高级语言: Java
项目地址: git://github.com/codersxl/Mvp-.git
创建时间: 2018-12-30T11:12:30Z
项目社区:https://github.com/codersxl/Mvp-

开源协议:

下载