MVP的简单介绍
简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
举例说明进行网络请求数据
//进行网络请求时需要加入依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
//V层
public interface DataView { void getData(List<String> list); }//M层
public class DataModel { private List<String> list; public void getInfo(final ModeDataListener listener){ OkHttpClient client = new OkHttpClient(); list = new ArrayList<>(); final Request request = new Request.Builder().url ("http://japi.juhe.cn/health_knowledge/categoryList?key=4b7da8935e022b95d895dcd3c4184f0c").build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson = new Gson(); Healther healther = gson.fromJson(string, Healther.class); List<Healther.ResultBean> result = healther.getResult(); for (Healther.ResultBean r:result) { list.add(r.getName()); } listener.getData(list); } }); } public interface ModeDataListener{ void getData(List<String> list); } }
//P层
public class DataPresenter { private UserModel userModel; private DataView dataView; public DataPresenter(DataView dataView) { this.dataView = dataView; this.userModel = new UserModel(); } public void get(){ userModel.getInfo(new UserModel.ModeDataListener() { @Override public void getData(List<String> list) { dataView.getData(list); } }); } public void detach(){ dataView = null; } }
//主类
public class MainActivity extends AppCompatActivity implements DataView { private DataPresenter presenter; private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (ListView) findViewById(R.id.lv); presenter = new DataPresenter(this); presenter.get(); @Override public void getData(final List<String> list) { runOnUiThread(new Runnable() { @Override public void run() { System.out.println("===="+list.size()); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1,list); lv.setAdapter(adapter); } }); } @Override protected void onDestroy() { super.onDestroy(); presenter.detach(); } }//JavaBean类
public class Healther { private int error_code; private String reason; private List<ResultBean> result; public int getError_code() { return error_code; } public void setError_code(int error_code) { this.error_code = error_code; } public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public List<ResultBean> getResult() { return result; } public void setResult(List<ResultBean> result) { this.result = result; } public static class ResultBean { private int id; private String name; private String description; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } }