电商项目 简单的mvp 适合出学者 view层和presenter层的接口回调
2017-11-06 20:09
465 查看
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/username_et" android:hint="请输入账号" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/password_et" android:hint="请输入密码" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textPassword" /> <Button android:id="@+id/login_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="登录"/> </LinearLayout> /////////////////////////这是v层 ///////////////////////////////////////////// 实现接口的方法 通过方法拿到传回来的值
package com.example.jiekou01; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity implements Callback, View.OnClickListener { private static final String TAG = "MainActivity"; public static final String USERNAME = "wuzhanglao"; public static final String PASSWORD = "470782682"; private EditText username_et; private EditText password_et; private Button login_btn; private Titleview titleview; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); username_et = (EditText) findViewById(R.id.username_et); password_et = (EditText) findViewById(R.id.password_et); login_btn = (Button) findViewById(R.id.login_btn); login_btn.setOnClickListener(this); titleview = new Titleview(this); //通过this把自己的方法传过去 ,方便去拿那边的值 //实例化对象 调titleview的方法 把UI层的值拿走 } //雇一个叫main的管家,然后把自己登录成功和登录失败的联系方式给他 //如果登录成功,管家会拨打loginSuccess这个电话 //如果登录失败,管家会拨打logniFailed(String msg)这个电话 //现在是UI层 public void LoginSuccess() { Toast.makeText(MainActivity.this,"管家打电话过来说:登录成功",Toast.LENGTH_SHORT).show(); } @Override public void LoginFailed(String msg) { Toast.makeText(MainActivity.this,"管家打电话过来说:"+msg,Toast.LENGTH_SHORT).show(); } //他通过我们实例化对象 来我们UI层拿数据 public void onClick(View v) { switch (v.getId()) { case R.id.login_btn: String username = username_et.getText().toString(); String password = password_et.getText().toString(); // 让自己的管家去处理登录事件 titleview.login(username, password); break; } } } ////////////////////////////////////////////////////////////////// 接口
package com.example.jiekou01; /** * Created by gq on 2017/11/6. */ public interface Callback { //如果登录成功,管家会拨打这个电话(接口) void LoginSuccess(); //如果登录失败,管家会拨打这个电话(接口),并告诉MainActivity大妹子为什么登录失败 void LoginFailed(String msg); }
////////////////////////p层写逻辑代码 减少Acitivity 的臃肿///////////////////////////////////////
package com.example.jiekou01; import android.view.View; /** * Created by gq on 2017/11/6. */ public class Titleview { //private static final String TAG = "Titleview"; //p层 private Callback view; public Titleview(Callback v) { this.view=v; } public void login(String username, String password) { if (username.isEmpty() || password.isEmpty()) { view.LoginFailed("账号或密码不能为空"); } else if (username.length() < 8 || password.length() < 9) { view.LoginFailed("账号至少8位,密码至少9位"); } else if (username.equals(MainActivity.USERNAME)) { if (password.endsWith(MainActivity.PASSWORD)) { // 登录成功,main拨打loginSuccess()电话通知主人登录成功了 view.LoginSuccess(); } else { // 登录失败,main拨打loginFailed()电话通知主人登录失败了,并告知失败原因 view.LoginFailed("密码错误"); } } } }
相关文章推荐
- (安卓) 自定义View 绘画圆(包括简单的接口回调)
- Android官方TODO-MVP项目分析(上)---View 层 Presenter 层以及 Contract 分析
- RecyclerView(ListView)简单和接口回调
- 探索MVP(Model-View-Presenter)设计模式在SharePoint平台下的实现
- NBearV3教程——MVP(Model/View/Presenter)篇
- 设计模式学习:Model View Presenter (MVP)
- 简单写了一个MVP项目,有兴趣可以看看
- Android中ListView适配器中的view重用和接口回调
- 超级简单RecycleViewAdapter的封装-支持多视图,多点击回调
- 接口MVP原生登录注册+搜索+recycleView切换展示
- JAVA Web项目 利用CXF +Spring 做简单接口
- MVP新手尝试以及自动生成 View、Presenter
- 快速搭建一个简单的T-MVP项目
- Android中Recyclerview使用7----条目中按钮点击事件,在activity中调用(接口回调)
- Model View Presenter (MVP)
- 回顾接口回调:Interface CallBack 两种简单小思维
- 传智播客Java学习路线图-适合自学者从入门到项目开发
- 如何获得View与ViewGroup建立View层级关系时的回调接口?
- MVP入门,接口回调new接口和implement实现,防止内存泄露解绑
- MVP简单实现OKHttp+recyclerview+springview