Android 最简单的MVP

2016-11-25  本文已影响27人  hello_math

代码源:https://github.com/lijingchang/smallMVP.git

google官方示例代码有点复杂,所以自己写了一个demo。

View:

public class MainActivity extends Activity implements IView { private EditText shelltext; private TextView backon; private Ipresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); presenter=new Testpresenter(this); shelltext=(EditText)findViewById(R.id.cmd); backon=(TextView)findViewById(R.id.backon); findViewById(R.id.doshell).setOnClickListener(myhandler); findViewById(R.id.showpos).setOnClickListener(myhandler); findViewById(R.id.showall).setOnClickListener(myhandler); backon.setMovementMethod(ScrollingMovementMethod.getInstance()); } View.OnClickListener myhandler = new View.OnClickListener() { public void onClick(View v) { switch(v.getId()) { case R.id.doshell: presenter.add(shelltext.getText().toString()); break; case R.id.showpos: presenter.showpos(shelltext.getText().toString()); break; case R.id.showall: presenter.showall(); break; default: break; } } }; @Override public void settext(String arg1){ backon.append(arg1+'\n'); } @Override public void setEdittext(String arg1){ shelltext.setText(arg1); } }

完成IView定义函数,将之传给presenter。IView定义就是@Override里面的几个函数

Presenter

package com.example.presenter; import com.example.model.DataModel; import com.example.model.IModel; import com.example.test.IView; public class Testpresenter implements Ipresenter{ private IView viewcontrol; private IModel model; public Testpresenter(IView view){ this.viewcontrol=view; this.model=new DataModel(); } @Override public void add(String arg0){ model.additem(arg0); } @Override public void showpos(String arg0){ viewcontrol.settext(""+model.showpos(arg0)); } @Override public void showall(){ viewcontrol.settext(""+model.showall()); } }

接收View传给的IView调用方法,完成Ipresenter定义函数,初始化Model。

Model

package com.example.model; import java.util.ArrayList; import java.util.List; public class DataModel implements IModel{ private List<String> cmdlist=new ArrayList<String>(); @Override public void additem(String arg1){ cmdlist.add(arg1); } @Override public void additem(String arg1,int pos){ cmdlist.add(pos, arg1); } @Override public int getcount(){ return cmdlist.size(); } @Override public String getindexof(int pos){ return cmdlist.get(pos); } @Override public String showall(){ return cmdlist.toString(); } @Override public void clear(){ cmdlist.clear(); } @Override public int showpos(String arg1){ int i=cmdlist.indexOf(arg1); return i; } }

完成IModel定义函数,写数据接口

Interface

public interface IModel { void additem(String arg1); void additem(String arg1,int pos); int getcount(); String getindexof(int pos); void clear(); int showpos(String arg1); String showall(); }

package com.example.presenter; import com.example.model.DataModel; import com.example.model.IModel; import com.example.test.IView; public class Testpresenter implements Ipresenter{ private IView viewcontrol; private IModel model; public Testpresenter(IView view){ this.viewcontrol=view; this.model=new DataModel(); } @Override public void add(String arg0){ model.additem(arg0); } @Override public void showpos(String arg0){ viewcontrol.settext(""+model.showpos(arg0)); } @Override public void showall(){ viewcontrol.settext(""+model.showall()); } }

public interface IView { void settext(String arg1); void setEdittext(String arg1); }

上一篇 下一篇

猜你喜欢

热点阅读