电商项目 简单的mvp 适合出学者 view层和presenter层的接口回调

来源:互联网 发布:达内2017java视频下载 编辑:程序博客网 时间:2024/05/21 09:03
<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("密码错误");            }        }    } }


原创粉丝点击