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

<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("密码错误");
            }
        }
    }
 }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值