码迷,mamicode.com
首页 > 其他好文 > 详细

MVP带你入门实现登录

时间:2017-11-02 22:00:14      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:find   art   you   schema   创建   tools   gns   extend   height   

首先MVP是一种写代码的模式,因为我们用MVC的时候很难让自己的代码分离,耦合度非常高,这样就有了MVP有了P层并且,M层和V层的交互只能通过P层,这样就让我们在写

代码的时候不得不降低耦合度了;

创建包非常简单:

 

Activity属于View层所以就把它放在了View下面;

创好包之后就需要在view和model里面定义接口了,那么问题来了,要怎么定义接口,里面写什么,其实这个非常好写,只要知道自己要干什么就行。

我们今天写的是登录功能,那么我们就需要一个登录方法,还要有一个成功一个失败的方法。登录方法,我们需要去网络请求,那么就要写在Model层里面,

成功和失败是需要展示给用户,告诉用户登录的结果,所以是在view层里面的

 

Usermodel类
 @Override
    public void deng(User user, OnLis on) {
        String name = user.getName();
        String pass = user.getPass();
        if (name.equals("lxd") & pass.equals("123")) {
            on.su();
        }else{
            on.sb();
        }
    }

 


Userpres类

public class Userpres {
    private final Iview iview;
    private final Imodel imodel;

    public Userpres(Iview iview) {
        this.iview = iview;
        imodel=new Usermodel();
    }
    public void login(User user){
        imodel.deng(user, new OnLis() {
            @Override
            public void su() {
                iview.success();
            }

            @Override
            public void sb() {
                iview.deft();
            }
        });
    }
}

Activity类:

public class MainActivity extends AppCompatActivity implements Iview{
    EditText name,pass;
    Button bt;
    Userpres us=new Userpres(this);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        name= (EditText) findViewById(R.id.editText);
        pass= (EditText) findViewById(R.id.editText2);
        bt= (Button) findViewById(R.id.button);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String s = name.getText().toString();
                String s1 = pass.getText().toString();
                us.login(new User(s,s1));
            }
        });
    }

    @Override
    public void success() {
        Toast.makeText(MainActivity.this,"成功",Toast.LENGTH_SHORT).show();
    }

    @Override
    public void deft() {
        Toast.makeText(MainActivity.this,"失败",Toast.LENGTH_SHORT).show();
    }
}

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.bwie.test.mvplianxi22.view.MainActivity">


<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPersonName"
    android:text="Name"
    android:ems="10"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="72dp"
    android:layout_marginTop="38dp"
    android:id="@+id/editText" />

<EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:inputType="textPassword"
    android:ems="10"
    android:layout_below="@+id/editText"
    android:layout_alignStart="@+id/editText"
    android:layout_marginTop="68dp"
    android:id="@+id/editText2" />

<Button
    android:text="Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText2"
    android:layout_alignStart="@+id/editText2"
    android:layout_marginStart="33dp"
    android:layout_marginTop="58dp"
    android:id="@+id/button" />
</RelativeLayout>

 这里在定义了一个接口可以让model中判断后通过传入的接口来调用方法,不会出现网络请求时有延迟判断:

public interface OnLis {
    void su();
    void sb();
}

 

 

MVP带你入门实现登录

标签:find   art   you   schema   创建   tools   gns   extend   height   

原文地址:http://www.cnblogs.com/cainiaodongdong/p/7774547.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!