MVP的简单使用
来源:互联网 发布:软件成本估算专家 编辑:程序博客网 时间:2024/06/05 05:46
MVP的简单应用
1、M-V-P的简单使用
V——视图层 自定义功能接口,Activity继承接口并实现里面的方法调用
public interface LoginView { //书写接口, //接口方法 public void nameEmpty(); //密码为空 public void passwordEmpth(); //登录成功 public void loginSuccess(Object object); //登录失败 public void loginFailed(int code);}//继承接口后 更具操作 通知中间层Persenter进行相对应的数据调用和回调
public class BallActivity extends AppCompatActivity implements LoginView{ @BindView(R.id.name) EditText name; @BindView(R.id.paw) EditText paw; @BindView(R.id.but_dl) Button login; private LoginPresenter loginPresenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ball); ButterKnife.bind(this); //new 一个p中间层 这个this代表loginview loginPresenter = new LoginPresenter(this); } @OnClick(R.id.but_dl) public void onClick() { loginPresenter.login(name.getText().toString(),paw.getText().toString()); } @Override public void nameEmpty() { Toast.makeText(this,"用户名不能为空!!!",Toast.LENGTH_SHORT).show(); } @Override public void passwordEmpth() { Toast.makeText(this,"密码不能为空!!!",Toast.LENGTH_SHORT).show(); } @Override public void loginSuccess(Object object) { runOnUiThread(new Runnable() { @Override public void run() { //主线程中不能做耗时操作 Toast.makeText(BallActivity.this,"登陆成功!!!",Toast.LENGTH_SHORT).show(); } }); } @Override public void loginFailed(int code) { Toast.makeText(this,"登录失败!!!",Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); loginPresenter.detach(); }}2,P-中间层,作逻辑代码的操作 减轻Activity的代码量
public class LoginPresenter { //视图层发生改变通知中间层p,然后中间层决定是否通知模型层 需要使用就new private LoginView loginView; private LoginModel loginModel; public LoginPresenter(LoginView loginView) { this.loginView = loginView; loginModel = new LoginModel(); } public void detach(){ this.loginView = null; } //因为是验证密码和账号 persenter里上书写的都是逻辑代码,编写逻辑代码 public void login(String name,String paw){ if (TextUtils.isEmpty(name)){ loginView.nameEmpty(); return; } if (TextUtils.isEmpty(paw)){ loginView.passwordEmpth(); return; } loginModel.login(name, paw, new ModelCallBack() { @Override public void success(String data) { loginView.loginSuccess(data); } @Override public void failed(int code) { loginView.loginFailed(code); } }); }}3。M-模型层,工具类的存放和使用public class LoginModel { //模型层 放工具等代码 public void login(String name, String paw, final ModelCallBack callBack){ OkHttpClient okHttpClient = new OkHttpClient(); RequestBody body = new FormBody.Builder() .add("pscid","39") .add("page","1") .build(); Request request = new Request.Builder().url("http://120.27.23.105/product/getProducts") .post(body) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { callBack.failed(1); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); //接口回调 callBack.success(result); } }); }}4,接口的创建,接口回调时返回数据public interface ModelCallBack { public void success(String data); public void failed(int code);}5,在布局文件中加载布局<EditText android:id="@+id/name" android:layout_width="match_parent" android:layout_height="wrap_content" /><EditText android:id="@+id/paw" android:layout_width="match_parent" android:layout_height="wrap_content" /><Button android:id="@+id/but_dl" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="login"/>
阅读全文
0 0
- MVP的简单使用
- MVP的简单使用
- MVP的简单使用
- mvp框架的简单使用
- Android mvp的简单使用和实现
- Android中使用MVP的简单封装
- MVP+retrofit+rxjava+Knife的简单使用
- RecyclerView的MVP模式简单使用
- 安卓MVP的简单使用
- Android MVP框架和简单的使用
- mvp简单使用
- Mvp简单使用
- MVP简单使用+RecyclerView
- MVP框架 简单使用
- MVP的简单理解
- MVP的简单理解
- MVP的简单实例
- MVP 简单的例子
- 重视工具脚本的健壮性
- 机器学习心得之Andrew Ng(4)
- 2017.11.3测试
- 11月02日解题报告
- <胡策day> 10.3 听说这套题很简单
- MVP的简单使用
- [bzoj3312][Usaco2013 Nov][DP]No Change不找零
- Xcode9学习笔记27
- LeetCode(290,17,605)
- HDU5500 Reorder the Books(脑洞?)
- Rxjava
- 手机平板charger模块前期bringup主要工作
- oracle的权限管理
- java垃圾回收机制 gc