您的位置:首页 > 理论基础 > 计算机网络

MVP的简单介绍

2017-09-28 16:59 190 查看
简称: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;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息