mvc model view controller
自己做了一个demo recyclerview的条目展示
定义了一个Newsmoudle接口
public void geturl(String url, OnNewsListner onNewsListner);
定义了一个方法 传递url 和 一个接口
OnNewsListnerpublic void Onsuceess(Mynews mm); public void Onerror(String error); 定义一个实现类public class Newsmoudleimp implements Newsmoulde {@Override public void geturl(String url, final OnNewsListner onNewsListner) { OkHttpUtils.get().url(url).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { onNewsListner.Onerror(e.toString()); } @Override public void onResponse(String response, int id) { Gson gson=new Gson(); Mynews mynews = gson.fromJson(response, Mynews.class); Log.e("ss",mynews.toString()); onNewsListner.Onsuceess(mynews); } }); 会重写Newsmoudle里面的方法onNewsListner 通过这个对象去调用回调接口里面的两个方法 将结果传递进去public class MainActivity extends AppCompatActivity implements OnNewsListnerNewsmoulde newsmoulde=new Newsmoudleimp(); newsmoulde.geturl(MyUtilurl.url,this);
}
以上就是mvc的设计模式做一个简单的网络请求展示数据
mvp
activity相当于v
m层做逻辑public interface Newsmoudle { public void getutl(String url, Newsview newsview); }public class Newsmoudleimp implements Newsmoudle { @Override public void getutl(String url, final Newsview newsview) { OkHttpUtils.get().url(Myurl.str).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e, int id) { newsview.onError("请求失败"); } @Override public void onResponse(String response, int id) { Gson gson=new Gson(); Mynews mynews = gson.fromJson(response, Mynews.class); newsview.onSuccess(mynews); } }); }public interface Newsview { public void onSuccess(Mynews mynews); public void onError(String str); }
//p层要拿到m层和v层的对象
//通过一个方法将数据传递给view层public class Newspresenter { private Newsview newsview; Newsmoudle newsmoudle=new Newsmoudleimp(); private Context context; public Newspresenter(Newsview newsview, Context context) { this.newsview = newsview; this.context = context; } public void getdata(){ newsmoudle.getutl(Myurl.str, new Newsview() { @Override public void onSuccess(Mynews mynews) { newsview.onSuccess(mynews); } @Override public void onError(String str) { newsview.onError(str); } }); }