MVP带你入门实现登录
Posted 菜鸟东东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVP带你入门实现登录相关的知识,希望对你有一定的参考价值。
首先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带你入门实现登录的主要内容,如果未能解决你的问题,请参考以下文章